void print_disk_tree (int block_nr) { struct buffer_head * bh; bh = bread (g_sb.s_dev, block_nr, g_sb.s_blocksize); if (B_IS_KEYS_LEVEL (bh)) { int i; struct disk_child * dc; g_stat_info.nr_internals ++; print_block (bh, print_mode (), -1, -1); dc = B_N_CHILD (bh, 0); for (i = 0; i <= B_NR_ITEMS (bh); i ++, dc ++) print_disk_tree (dc->dc_block_number); } else if (B_IS_ITEMS_LEVEL (bh)) { g_stat_info.nr_leaves ++; print_block (bh, print_mode (), -1, -1); } else { print_block (bh, print_mode (), -1, -1); die ("print_disk_tree: bad block type"); } brelse (bh); }
static int print_leaf(struct buffer_head *bh, int print_mode, int first, int last) { struct block_head *blkh; struct item_head *ih; int i, nr; int from, to; if (!B_IS_ITEMS_LEVEL(bh)) return 1; check_leaf(bh); blkh = B_BLK_HEAD(bh); ih = B_N_PITEM_HEAD(bh, 0); nr = blkh_nr_item(blkh); printk ("\n===================================================================\n"); reiserfs_printk("LEAF NODE (%ld) contains %z\n", bh->b_blocknr, bh); if (!(print_mode & PRINT_LEAF_ITEMS)) { reiserfs_printk("FIRST ITEM_KEY: %k, LAST ITEM KEY: %k\n", &(ih->ih_key), &((ih + nr - 1)->ih_key)); return 0; } if (first < 0 || first > nr - 1) from = 0; else from = first; if (last < 0 || last > nr) to = nr; else to = last; ih += from; printk ("-------------------------------------------------------------------------------\n"); printk ("|##| type | key | ilen | free_space | version | loc |\n"); for (i = from; i < to; i++, ih++) { printk ("-------------------------------------------------------------------------------\n"); reiserfs_printk("|%2d| %h |\n", i, ih); if (print_mode & PRINT_LEAF_ITEMS) op_print_item(ih, B_I_PITEM(bh, ih)); } printk ("===================================================================\n"); return 0; }