- 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.
This commit is contained in:
Jeff Roberson 2005-03-25 00:20:37 +00:00
parent f158df07ab
commit 6c759f3558
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=144084

View file

@ -3790,12 +3790,16 @@ DB_SHOW_COMMAND(buffer, db_show_buffer)
return; 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_flags = 0x%b\n", (u_int)bp->b_flags, PRINT_BUF_FLAGS);
db_printf( db_printf(
"b_error = %d, b_bufsize = %ld, b_bcount = %ld, b_resid = %ld\n" "b_error = %d, b_bufsize = %ld, b_bcount = %ld, b_resid = %ld\n"
"b_bufobj = (%p), b_data = %p, b_blkno = %jd\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_error, bp->b_bufsize, bp->b_bcount, bp->b_resid,
bp->b_bufobj, bp->b_data, (intmax_t)bp->b_blkno); 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) { if (bp->b_npages) {
int i; int i;
db_printf("b_npages = %d, pages(OBJ, IDX, PA): ", bp->b_npages); 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_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 */ #endif /* DDB */