f3e32599e8
When called from vrecycle() or vgone() there is a window where the refcount is greater than zero and another thread could get and release a reference that would miss VOP_INACTIVE() as the refcount doesn't drop to zero. Adjust test fs/puffs/t_basic: test VOP_INACTIVE count being greater zero. - Make vrecycle() more robust by checking v_usecount first and preventing further references across vn_lock(). Fixes a deadlock where one thread starts unmount, second thread locks a directory and allocates a vnode and first thread tries to vrecycle() the directory. First thread holds vfs_busy and wants vnode, second thread holds vnode and wants vfs_busy. - With these fixes in place change cleanvnode() to use vget()/vrecycle() to reclaim the vnode. |
||
---|---|---|
.. | ||
cd9660 | ||
common | ||
ffs | ||
fifofs | ||
hfs | ||
kernfs | ||
lfs | ||
msdosfs | ||
nfs | ||
nullfs | ||
psshfs | ||
ptyfs | ||
puffs | ||
tmpfs | ||
umapfs | ||
union | ||
vfs | ||
zfs | ||
h_funcs.subr | ||
Makefile | ||
Makefile.inc |