summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbp <bp@FreeBSD.org>2001-03-26 12:45:35 +0000
committerbp <bp@FreeBSD.org>2001-03-26 12:45:35 +0000
commitd38c3464d1d939d7acdfa8777d6b4311d7cc82d1 (patch)
tree77578cb382e720a37490fc381063815c0dfb8c6b
parentc47745e97713190e3da533b9d29b74b2ceee96f1 (diff)
downloadFreeBSD-src-d38c3464d1d939d7acdfa8777d6b4311d7cc82d1.zip
FreeBSD-src-d38c3464d1d939d7acdfa8777d6b4311d7cc82d1.tar.gz
Previous commit broke interlock locking for !LK_RETRY case.
-rw-r--r--sys/kern/vfs_vnops.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index bf33d16..4cb77c1 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -619,13 +619,14 @@ debug_vn_lock(vp, flags, p, filename, line)
#endif
{
int error;
-
+
do {
if ((flags & LK_INTERLOCK) == 0)
mtx_lock(&vp->v_interlock);
if ((vp->v_flag & VXLOCK) && vp->v_vxproc != curproc) {
vp->v_flag |= VXWANT;
- msleep(vp, &vp->v_interlock, PINOD, "vn_lock", 0);
+ msleep(vp, &vp->v_interlock, PINOD | PDROP,
+ "vn_lock", 0);
error = ENOENT;
} else {
if (vp->v_vxproc != NULL)
OpenPOWER on IntegriCloud