diff options
author | jeff <jeff@FreeBSD.org> | 2005-03-25 00:20:37 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-03-25 00:20:37 +0000 |
commit | 8e533783f30fa87df9d09c296e590736e72f871c (patch) | |
tree | 2baf00f6922a8ea84faa0b465157e7691effdb93 /sys/kern | |
parent | 26329d2e37349295262af1f4f0446e2986265922 (diff) | |
download | FreeBSD-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.c | 18 |
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 */ |