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