- 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;
}
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 */