svn commit: r193172 - head/sys/fs/nullfs

Konstantin Belousov kib at FreeBSD.org
Sun May 31 14:52:47 UTC 2009


Author: kib
Date: Sun May 31 14:52:45 2009
New Revision: 193172
URL: http://svn.freebsd.org/changeset/base/193172

Log:
  Lock the real null vnode lock before substitution of vp->v_vnlock.
  This should not really matter for correctness, since vp->v_lock is
  not locked before the call, and null_lock() holds the interlock,
  but makes the control flow for reclaim more clear.
  
  Tested by:	pho

Modified:
  head/sys/fs/nullfs/null_vnops.c

Modified: head/sys/fs/nullfs/null_vnops.c
==============================================================================
--- head/sys/fs/nullfs/null_vnops.c	Sun May 31 14:48:51 2009	(r193171)
+++ head/sys/fs/nullfs/null_vnops.c	Sun May 31 14:52:45 2009	(r193172)
@@ -683,14 +683,15 @@ null_reclaim(struct vop_reclaim_args *ap
 	 * Use the interlock to protect the clearing of v_data to
 	 * prevent faults in null_lock().
 	 */
+	lockmgr(&vp->v_lock, LK_EXCLUSIVE, NULL);
 	VI_LOCK(vp);
 	vp->v_data = NULL;
 	vp->v_object = NULL;
 	vp->v_vnlock = &vp->v_lock;
-	if (lowervp) {
-		lockmgr(vp->v_vnlock, LK_EXCLUSIVE | LK_INTERLOCK, VI_MTX(vp));
+	VI_UNLOCK(vp);
+	if (lowervp)
 		vput(lowervp);
-	} else
+	else
 		panic("null_reclaim: reclaiming a node with no lowervp");
 	free(xp, M_NULLFSNODE);
 


More information about the svn-src-all mailing list