summaryrefslogtreecommitdiff
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2002-08-22 07:44:45 +0000
committerJeff Roberson <jeff@FreeBSD.org>2002-08-22 07:44:45 +0000
commit9abf54f032416338f43f2ee5722854b6ea1d7478 (patch)
tree411a5434a85b431b5c0bd93d908225f8527b52d7 /sys/kern/vfs_subr.c
parent510939d08959d9e90caac1998d4d44bfa8e1d937 (diff)
Notes
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 96f902a24977..219363572cbd 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -739,10 +739,9 @@ vcanrecycle(struct vnode *vp)
/* We should be able to immediately acquire this */
/* XXX This looks like it should panic if it fails */
- if (vn_lock(vp, LK_INTERLOCK | LK_EXCLUSIVE, td) != 0) {
- VI_UNLOCK(vp);
+ if (vn_lock(vp, LK_INTERLOCK | LK_EXCLUSIVE, td) != 0)
return (EWOULDBLOCK);
- }
+
/*
* Don't recycle if we still have cached pages.
*/
@@ -1917,18 +1916,11 @@ vget(vp, flags, td)
*/
if ((flags & LK_INTERLOCK) == 0)
VI_LOCK(vp);
- if (vp->v_iflag & VI_XLOCK) {
- if (vp->v_vxproc == curthread) {
-#if 0
- /* this can now occur in normal operation */
- log(LOG_INFO, "VXLOCK interlock avoided\n");
-#endif
- } else {
- vp->v_iflag |= VI_XWANT;
- msleep(vp, VI_MTX(vp), PINOD | PDROP, "vget", 0);
- mp_fixme("interlock not released.");
- return (ENOENT);
- }
+ 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);
}
vp->v_usecount++;