summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2002-01-19 02:14:45 +0000
committerdillon <dillon@FreeBSD.org>2002-01-19 02:14:45 +0000
commitf51ea914df90df0fcf2b355661d7c44837f8a331 (patch)
tree82a9e054f3158100f2934a28d8200d1812f900b5
parent20073b03222ce9d43b2d432e035bd2e049f47ea6 (diff)
downloadFreeBSD-src-f51ea914df90df0fcf2b355661d7c44837f8a331.zip
FreeBSD-src-f51ea914df90df0fcf2b355661d7c44837f8a331.tar.gz
Remove 'VXLOCK: interlock avoided' warnings. This can now occur in normal
operation. The vgonel() code has always called vclean() but until we started proactively freeing vnodes it would never actually be called with a dirty vnode, so this situation did not occur prior to the vnlru() code. Now that we proactively free vnodes when kern.maxvnodes is hit, however, vclean() winds up with work to do and improperly generates the warnings. Reviewed by: peter Approved by: re (for MFC) MFC after: 1 day
-rw-r--r--sys/kern/vfs_subr.c3
-rw-r--r--sys/kern/vfs_vnops.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 41a3530..277430d 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1648,7 +1648,10 @@ vget(vp, flags, td)
mtx_lock(&vp->v_interlock);
if (vp->v_flag & VXLOCK) {
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_flag |= VXWANT;
msleep((caddr_t)vp, &vp->v_interlock, PINOD | PDROP,
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 1bbed38..403b067 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -701,8 +701,11 @@ debug_vn_lock(vp, flags, td, filename, line)
"vn_lock", 0);
error = ENOENT;
} else {
+#if 0
+ /* this can now occur in normal operation */
if (vp->v_vxproc != NULL)
log(LOG_INFO, "VXLOCK interlock avoided in vn_lock\n");
+#endif
#ifdef DEBUG_LOCKS
vp->filename = filename;
vp->line = line;
OpenPOWER on IntegriCloud