summaryrefslogtreecommitdiff
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2000-12-01 03:43:33 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2000-12-01 03:43:33 +0000
commit21913407860853bf106c630bf8134e1e3c87c797 (patch)
tree4a58635d54432e735b3a6bc0a1f18c99f460b1b4 /sys/kern/vfs_subr.c
parent472fd56ea581255ced6da5814785db036f1cd3e0 (diff)
Notes
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index e6fa0d7180ca..cf6029a3359f 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -281,19 +281,13 @@ vfs_busy(mp, flags, interlkp, p)
if (flags & LK_NOWAIT)
return (ENOENT);
mp->mnt_kern_flag |= MNTK_MWAIT;
- if (interlkp) {
- mtx_exit(interlkp, MTX_DEF);
- }
/*
* Since all busy locks are shared except the exclusive
* lock granted when unmounting, the only place that a
* wakeup needs to be done is at the release of the
* exclusive lock at the end of dounmount.
*/
- tsleep((caddr_t)mp, PVFS, "vfs_busy", 0);
- if (interlkp) {
- mtx_enter(interlkp, MTX_DEF);
- }
+ msleep((caddr_t)mp, interlkp, PVFS, "vfs_busy", 0);
return (ENOENT);
}
lkflags = LK_SHARED | LK_NOPAUSE;
@@ -1442,8 +1436,8 @@ vget(vp, flags, p)
printf("VXLOCK interlock avoided\n");
} else {
vp->v_flag |= VXWANT;
- mtx_exit(&vp->v_interlock, MTX_DEF);
- tsleep((caddr_t)vp, PINOD, "vget", 0);
+ msleep((caddr_t)vp, &vp->v_interlock, PINOD | PDROP,
+ "vget", 0);
return (ENOENT);
}
}
@@ -1842,8 +1836,8 @@ vop_revoke(ap)
*/
if (vp->v_flag & VXLOCK) {
vp->v_flag |= VXWANT;
- mtx_exit(&vp->v_interlock, MTX_DEF);
- tsleep((caddr_t)vp, PINOD, "vop_revokeall", 0);
+ msleep((caddr_t)vp, &vp->v_interlock, PINOD | PDROP,
+ "vop_revokeall", 0);
return (0);
}
dev = vp->v_rdev;
@@ -1911,8 +1905,8 @@ vgonel(vp, p)
*/
if (vp->v_flag & VXLOCK) {
vp->v_flag |= VXWANT;
- mtx_exit(&vp->v_interlock, MTX_DEF);
- tsleep((caddr_t)vp, PINOD, "vgone", 0);
+ msleep((caddr_t)vp, &vp->v_interlock, PINOD | PDROP,
+ "vgone", 0);
return;
}