- We have to transfer lockers after reseting our vnlock pointer.
Sponsored by: Isilon Systems, Inc.
This commit is contained in:
parent
46d7d4a332
commit
9feb7408f8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=143630
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user