summaryrefslogtreecommitdiffstats
path: root/sys/fs/nullfs
diff options
context:
space:
mode:
authorbp <bp@FreeBSD.org>2000-10-15 06:25:42 +0000
committerbp <bp@FreeBSD.org>2000-10-15 06:25:42 +0000
commitb9d830d3e775d119f3f2d60cd9d3c1573a8a0796 (patch)
treee61ed07c0810847236d696821e0208d909ed955e /sys/fs/nullfs
parent1f6d21dd38b506092bdf9b10eda2b5fa1d581017 (diff)
downloadFreeBSD-src-b9d830d3e775d119f3f2d60cd9d3c1573a8a0796.zip
FreeBSD-src-b9d830d3e775d119f3f2d60cd9d3c1573a8a0796.tar.gz
Fix nullfs breakage caused by incomplete migration of v_interlock from
simple_lock to mutex. Reset LK_INTERLOCK flag when interlock released manually.
Diffstat (limited to 'sys/fs/nullfs')
-rw-r--r--sys/fs/nullfs/null_vnops.c8
1 files changed, 5 insertions, 3 deletions
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;
OpenPOWER on IntegriCloud