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