svn commit: r225663 - in stable/8/sys: conf kern sys

Attilio Rao attilio at FreeBSD.org
Mon Sep 19 11:08:31 UTC 2011


Author: attilio
Date: Mon Sep 19 11:08:31 2011
New Revision: 225663
URL: http://svn.freebsd.org/changeset/base/225663

Log:
  MFC r225448:
  Improve busy buffers diagnostic on shutdown path.

Modified:
  stable/8/sys/conf/NOTES
  stable/8/sys/conf/options
  stable/8/sys/kern/kern_shutdown.c
  stable/8/sys/kern/vfs_bio.c
  stable/8/sys/sys/buf.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/conf/NOTES
==============================================================================
--- stable/8/sys/conf/NOTES	Mon Sep 19 10:58:30 2011	(r225662)
+++ stable/8/sys/conf/NOTES	Mon Sep 19 11:08:31 2011	(r225663)
@@ -2845,7 +2845,6 @@ options 	SCSI_NCR_MYADDR=7
 options 	SC_DEBUG_LEVEL=5	# Syscons debug level
 options 	SC_RENDER_DEBUG	# syscons rendering debugging
 
-options 	SHOW_BUSYBUFS	# List buffers that prevent root unmount
 options 	VFS_BIO_DEBUG	# VFS buffer I/O debugging
 
 options 	KSTACK_MAX_PAGES=32 # Maximum pages to give the kernel stack

Modified: stable/8/sys/conf/options
==============================================================================
--- stable/8/sys/conf/options	Mon Sep 19 10:58:30 2011	(r225662)
+++ stable/8/sys/conf/options	Mon Sep 19 11:08:31 2011	(r225663)
@@ -150,7 +150,6 @@ QUOTA
 SCHED_4BSD	opt_sched.h
 SCHED_STATS	opt_sched.h
 SCHED_ULE	opt_sched.h
-SHOW_BUSYBUFS
 SLEEPQUEUE_PROFILING
 SLHCI_DEBUG	opt_slhci.h
 SPX_HACK

Modified: stable/8/sys/kern/kern_shutdown.c
==============================================================================
--- stable/8/sys/kern/kern_shutdown.c	Mon Sep 19 10:58:30 2011	(r225662)
+++ stable/8/sys/kern/kern_shutdown.c	Mon Sep 19 11:08:31 2011	(r225663)
@@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$");
 #include "opt_ddb.h"
 #include "opt_kdb.h"
 #include "opt_panic.h"
-#include "opt_show_busybufs.h"
 #include "opt_sched.h"
 #include "opt_watchdog.h"
 
@@ -66,6 +65,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/smp.h>
 #include <sys/sysctl.h>
 #include <sys/sysproto.h>
+#include <sys/vnode.h>
 #ifdef SW_WATCHDOG
 #include <sys/watchdog.h>
 #endif
@@ -123,6 +123,14 @@ TUNABLE_INT("kern.sync_on_panic", &sync_
 
 SYSCTL_NODE(_kern, OID_AUTO, shutdown, CTLFLAG_RW, 0, "Shutdown environment");
 
+#ifndef DIAGNOSTIC
+static int show_busybufs;
+#else
+static int show_busybufs = 1;
+#endif
+SYSCTL_INT(_kern_shutdown, OID_AUTO, show_busybufs, CTLFLAG_RW,
+	&show_busybufs, 0, "");
+
 /*
  * Variable panicstr contains argument to first call to panic; used as flag
  * to indicate that the kernel has already called panic.
@@ -388,13 +396,17 @@ boot(int howto)
 				}
 #endif
 				nbusy++;
-#if defined(SHOW_BUSYBUFS) || defined(DIAGNOSTIC)
-				printf(
-			    "%d: bufobj:%p, flags:%0x, blkno:%ld, lblkno:%ld\n",
-				    nbusy, bp->b_bufobj,
-				    bp->b_flags, (long)bp->b_blkno,
-				    (long)bp->b_lblkno);
-#endif
+				if (show_busybufs > 0) {
+					printf(
+	    "%d: buf:%p, vnode:%p, flags:%0x, blkno:%jd, lblkno:%jd, buflock:",
+					    nbusy, bp, bp->b_vp, bp->b_flags,
+					    (intmax_t)bp->b_blkno,
+					    (intmax_t)bp->b_lblkno);
+					BUF_LOCKPRINTINFO(bp);
+					if (show_busybufs > 1)
+						vn_printf(bp->b_vp,
+						    "vnode content: ");
+				}
 			}
 		}
 		if (nbusy) {

Modified: stable/8/sys/kern/vfs_bio.c
==============================================================================
--- stable/8/sys/kern/vfs_bio.c	Mon Sep 19 10:58:30 2011	(r225662)
+++ stable/8/sys/kern/vfs_bio.c	Mon Sep 19 11:08:31 2011	(r225663)
@@ -4106,7 +4106,7 @@ DB_SHOW_COMMAND(buffer, db_show_buffer)
 		db_printf("\n");
 	}
 	db_printf(" ");
-	lockmgr_printinfo(&bp->b_lock);
+	BUF_LOCKPRINTINFO(bp);
 }
 
 DB_SHOW_COMMAND(lockedbufs, lockedbufs)

Modified: stable/8/sys/sys/buf.h
==============================================================================
--- stable/8/sys/sys/buf.h	Mon Sep 19 10:58:30 2011	(r225662)
+++ stable/8/sys/sys/buf.h	Mon Sep 19 11:08:31 2011	(r225663)
@@ -311,6 +311,12 @@ extern const char *buf_wmesg;		/* Defaul
 	lockdestroy(&(bp)->b_lock)
 
 /*
+ * Print informations on a buffer lock.
+ */
+#define BUF_LOCKPRINTINFO(bp) 						\
+	lockmgr_printinfo(&(bp)->b_lock)
+
+/*
  * Buffer lock assertions.
  */
 #if defined(INVARIANTS) && defined(INVARIANT_SUPPORT)


More information about the svn-src-stable-8 mailing list