summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-08-23 00:32:03 +0000
committerjeff <jeff@FreeBSD.org>2002-08-23 00:32:03 +0000
commitda601a39acf6f61f64f7bc6f86c7e7a2493eefd9 (patch)
treef91c7e89a6e0ac1a5598b799b1b68e0ed7c343a4
parent47cda62462fcc3dca6ad6c7d47ca3613d89ee122 (diff)
downloadFreeBSD-src-da601a39acf6f61f64f7bc6f86c7e7a2493eefd9.zip
FreeBSD-src-da601a39acf6f61f64f7bc6f86c7e7a2493eefd9.tar.gz
- 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
-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 2193635..d74c12c 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 f4aab01..0c106be 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);
OpenPOWER on IntegriCloud