- We have to transfer lockers after reseting our vnlock pointer.

Sponsored by:	Isilon Systems, Inc.
This commit is contained in:
Jeff Roberson 2005-03-15 11:28:45 +00:00
parent 46d7d4a332
commit 9feb7408f8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=143630

View File

@ -711,6 +711,7 @@ null_reclaim(struct vop_reclaim_args *ap)
struct vnode *vp = ap->a_vp; struct vnode *vp = ap->a_vp;
struct null_node *xp = VTONULL(vp); struct null_node *xp = VTONULL(vp);
struct vnode *lowervp = xp->null_lowervp; struct vnode *lowervp = xp->null_lowervp;
struct lock *vnlock;
if (lowervp) { if (lowervp) {
null_hashrem(xp); null_hashrem(xp);
@ -721,7 +722,11 @@ null_reclaim(struct vop_reclaim_args *ap)
vp->v_data = NULL; vp->v_data = NULL;
vp->v_object = NULL; vp->v_object = NULL;
vnlock = vp->v_vnlock;
lockmgr(&vp->v_lock, LK_EXCLUSIVE, NULL, curthread);
vp->v_vnlock = &vp->v_lock; vp->v_vnlock = &vp->v_lock;
transferlockers(vnlock, vp->v_vnlock);
lockmgr(vnlock, LK_RELEASE, NULL, curthread);
FREE(xp, M_NULLFSNODE); FREE(xp, M_NULLFSNODE);
return (0); return (0);