aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2002-08-23 00:32:03 +0000
committerJeff Roberson <jeff@FreeBSD.org>2002-08-23 00:32:03 +0000
commitad32f726db85cda48ed3d72ca0607cc285f7b703 (patch)
treef91c7e89a6e0ac1a5598b799b1b68e0ed7c343a4
parent95289fb2ec3abb89c8f3783edf6714b38c3b0a22 (diff)
downloadsrc-ad32f726db85cda48ed3d72ca0607cc285f7b703.tar.gz
src-ad32f726db85cda48ed3d72ca0607cc285f7b703.zip
- Fix a mistake in my last few commits. The PDROP flag stops msleep from
re-acquiring the mutex. Pointy hat to: me Noticed by: tegge
Notes
Notes: svn path=/head/; revision=102297
-rw-r--r--sys/kern/vfs_subr.c5
-rw-r--r--sys/kern/vfs_vnops.c3
2 files changed, 2 insertions, 6 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 219363572cbd..d74c12c9bc48 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1919,7 +1919,6 @@ vget(vp, flags, td)
if (vp->v_iflag & VI_XLOCK && vp->v_vxproc != curthread) {
vp->v_iflag |= VI_XWANT;
msleep(vp, VI_MTX(vp), PINOD | PDROP, "vget", 0);
- VI_UNLOCK(vp);
return (ENOENT);
}
@@ -2412,7 +2411,6 @@ vop_revoke(ap)
vp->v_iflag |= VI_XWANT;
msleep(vp, VI_MTX(vp), PINOD | PDROP,
"vop_revokeall", 0);
- VI_UNLOCK(vp);
return (0);
}
VI_UNLOCK(vp);
@@ -2482,8 +2480,7 @@ vgonel(vp, td)
ASSERT_VI_LOCKED(vp);
if (vp->v_iflag & VI_XLOCK) {
vp->v_iflag |= VI_XWANT;
- VI_UNLOCK(vp);
- tsleep(vp, PINOD | PDROP, "vgone", 0);
+ msleep(vp, VI_MTX(vp), PINOD | PDROP, "vgone", 0);
return;
}
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index f4aab013d9f4..0c106be9218f 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -850,8 +850,7 @@ debug_vn_lock(vp, flags, td, filename, line)
VI_LOCK(vp);
if ((vp->v_iflag & VI_XLOCK) && vp->v_vxproc != curthread) {
vp->v_iflag |= VI_XWANT;
- msleep(vp, VI_MTX(vp), PINOD | PDROP,
- "vn_lock", 0);
+ msleep(vp, VI_MTX(vp), PINOD, "vn_lock", 0);
error = ENOENT;
if ((flags & LK_RETRY) == 0) {
VI_UNLOCK(vp);