summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2005-03-25 00:20:37 +0000
committerjeff <jeff@FreeBSD.org>2005-03-25 00:20:37 +0000
commit8e533783f30fa87df9d09c296e590736e72f871c (patch)
tree2baf00f6922a8ea84faa0b465157e7691effdb93 /sys/kern
parent26329d2e37349295262af1f4f0446e2986265922 (diff)
downloadFreeBSD-src-8e533783f30fa87df9d09c296e590736e72f871c.zip
FreeBSD-src-8e533783f30fa87df9d09c296e590736e72f871c.tar.gz
- Add information about the buf lock to db_show_buffer.
- Add a 'show lockedbufs' command that is similar to show lockedvnods. Sponsored by: Isilon Systems, Inc.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_bio.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 6e0d913..a530d93 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -3790,12 +3790,16 @@ DB_SHOW_COMMAND(buffer, db_show_buffer)
return;
}
+ db_printf("buf at %p\n", bp);
db_printf("b_flags = 0x%b\n", (u_int)bp->b_flags, PRINT_BUF_FLAGS);
db_printf(
"b_error = %d, b_bufsize = %ld, b_bcount = %ld, b_resid = %ld\n"
"b_bufobj = (%p), b_data = %p, b_blkno = %jd\n",
bp->b_error, bp->b_bufsize, bp->b_bcount, bp->b_resid,
bp->b_bufobj, bp->b_data, (intmax_t)bp->b_blkno);
+ db_printf("lockstatus = %d, excl count = %d, excl owner %p\n",
+ lockstatus(&bp->b_lock, NULL), bp->b_lock.lk_exclusivecount,
+ bp->b_lock.lk_lockholder);
if (bp->b_npages) {
int i;
db_printf("b_npages = %d, pages(OBJ, IDX, PA): ", bp->b_npages);
@@ -3810,4 +3814,18 @@ DB_SHOW_COMMAND(buffer, db_show_buffer)
db_printf("\n");
}
}
+
+DB_SHOW_COMMAND(lockedbufs, lockedbufs)
+{
+ struct buf *bp;
+ int i;
+
+ for (i = 0; i < nbuf; i++) {
+ bp = &buf[i];
+ if (lockcount(&bp->b_lock)) {
+ db_show_buffer((uintptr_t)bp, 1, 0, NULL);
+ db_printf("\n");
+ }
+ }
+}
#endif /* DDB */
OpenPOWER on IntegriCloud