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