First vfs megapatch (not for the faint of heart)
Matthew Dillon
dillon at apollo.backplane.com
Fri Oct 8 17:10:50 PDT 2004
!!! All normal users not involved with testing the VFS code should be
using kernels based on the DragonFly_Stable tag and not mess with this
stuff !!!
Here's the first mega patch, relative to HEAD. This is not for
the faint of heart.
fetch http://leaf.dragonflybsd.org/~dillon/vfsx08.patch
This patch:
* Gets rid of the vnode interlock. The lockmgr interlock remains.
* Introduced VX locks, which are mandatory vp->v_lock based locks.
* Rewrites the locking semantics for deactivation and reclamation.
(A ref'd VX lock'd vnode is now required for vgone(), VOP_INACTIVE,
and VOP_RECLAIM). New guarentees emplaced with regard to vnode
ripouts.
* Recodes the mountlist scanning routines to close timing races.
* Recodes getnewvnode to close timing races (it now returns a
VX locked and refd vnode rather then a refd but unlocked vnode).
* Recodes VOP_REVOKE- a locked vnode is now mandatory.
* Recodes all VFS inode hash routines to close timing holes.
* Removes cache_leaf_test() - vnodes representing intermediate
directories are now held so the leaf test should no longer be
necessary.
* Splits the over-large vfs_subr.c into three additional source
files, broken down by major function (locking, mount related,
filesystem syncer).
Known issues:
* Possible vnode/namecache deadlocks.
* The VOP_CLOSE work is not finished (I am making a locked vnode
mandatory but not all VOP_CLOSE calls pass a locked vnode yet).
* While most filesystems now use vp->v_lock, I haven't done a final
pass to make vp->v_lock mandatory and to clean up the few remaining
inode based locks (nwfs I think and other obscure filesystems).
* NullFS gets confused when you hit a mount point in the underlying
filesystem.
* NFS not well tested.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list