diff options
author | bp <bp@FreeBSD.org> | 2001-03-26 12:45:35 +0000 |
---|---|---|
committer | bp <bp@FreeBSD.org> | 2001-03-26 12:45:35 +0000 |
commit | d38c3464d1d939d7acdfa8777d6b4311d7cc82d1 (patch) | |
tree | 77578cb382e720a37490fc381063815c0dfb8c6b /sys | |
parent | c47745e97713190e3da533b9d29b74b2ceee96f1 (diff) | |
download | FreeBSD-src-d38c3464d1d939d7acdfa8777d6b4311d7cc82d1.zip FreeBSD-src-d38c3464d1d939d7acdfa8777d6b4311d7cc82d1.tar.gz |
Previous commit broke interlock locking for !LK_RETRY case.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/vfs_vnops.c | 5 |
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) |