diff options
author | jeff <jeff@FreeBSD.org> | 2002-08-23 00:32:03 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-08-23 00:32:03 +0000 |
commit | da601a39acf6f61f64f7bc6f86c7e7a2493eefd9 (patch) | |
tree | f91c7e89a6e0ac1a5598b799b1b68e0ed7c343a4 | |
parent | 47cda62462fcc3dca6ad6c7d47ca3613d89ee122 (diff) | |
download | FreeBSD-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.c | 5 | ||||
-rw-r--r-- | sys/kern/vfs_vnops.c | 3 |
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); |