From b9d830d3e775d119f3f2d60cd9d3c1573a8a0796 Mon Sep 17 00:00:00 2001 From: bp Date: Sun, 15 Oct 2000 06:25:42 +0000 Subject: Fix nullfs breakage caused by incomplete migration of v_interlock from simple_lock to mutex. Reset LK_INTERLOCK flag when interlock released manually. --- sys/fs/nullfs/null_vnops.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sys/fs/nullfs') diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c index 9c15f9d..7ce4bd2 100644 --- a/sys/fs/nullfs/null_vnops.c +++ b/sys/fs/nullfs/null_vnops.c @@ -625,7 +625,7 @@ null_lock(ap) if (lvp == NULL) return (lockmgr(&vp->v_lock, flags, &vp->v_interlock, p)); if (flags & LK_INTERLOCK) { - simple_unlock(&vp->v_interlock); + mtx_exit(&vp->v_interlock, MTX_DEF); flags &= ~LK_INTERLOCK; } if ((flags & LK_TYPE_MASK) == LK_DRAIN) { @@ -671,8 +671,10 @@ null_unlock(ap) if (lvp == NULL) return (lockmgr(&vp->v_lock, flags | LK_RELEASE, &vp->v_interlock, p)); if ((flags & LK_THISLAYER) == 0) { - if (flags & LK_INTERLOCK) - simple_unlock(&vp->v_interlock); + if (flags & LK_INTERLOCK) { + mtx_exit(&vp->v_interlock, MTX_DEF); + flags &= ~LK_INTERLOCK; + } VOP_UNLOCK(lvp, flags & ~LK_INTERLOCK, p); } else flags &= ~LK_THISLAYER; -- cgit v1.1