btrfs-progs: print bytenr of child eb if mismatched level found in read_node_slot
If btrfs check reported like ERROR: child eb corrupted: parent bytenr=178081 item=246 parent level=1 child level=2 It's hard to find which eb is corrupted without bytenr in dump tree information: node 178081 level 1 items 424 free 69 generation 44495 owner EXTENT_TREE fs uuid 7d9dbe1b-dea6-4141-807b-026325123ad8 chunk uuid 97a3e3aa-7105-4101-aaf7-50204a240e69 key (16613126144 EXTENT_ITEM 4096) block 177939087360 gen 44433 key (16632803328 EXTENT_ITEM 4096) block 177939120128 gen 44433 key (16654548992 EXTENT_ITEM 8192) block 177970380800 gen 44336 key (16697884672 EXTENT_ITEM 8192) block 177970397184 gen 44336 key (16714223616 EXTENT_ITEM 16384) block 177970413568 gen 44336 key (16721760256 EXTENT_ITEM 16384) block 177943855104 gen 44436 key (16857755648 EXTENT_ITEM 4096) block 177857544192 gen 44416 ... For easier lookup, print bytenr of child eb if its level is not equal to parent's level - 1 in read_node_slot(). Signed-off-by: Su Yue <l@damenly.su> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
df2bdf97d2
commit
be6710f89d
|
@ -809,9 +809,9 @@ struct extent_buffer *read_node_slot(struct btrfs_fs_info *fs_info,
|
|||
|
||||
if (btrfs_header_level(ret) != level - 1) {
|
||||
error(
|
||||
"child eb corrupted: parent bytenr=%llu item=%d parent level=%d child level=%d",
|
||||
btrfs_header_bytenr(parent), slot,
|
||||
btrfs_header_level(parent), btrfs_header_level(ret));
|
||||
"child eb corrupted: parent bytenr=%llu item=%d parent level=%d child bytenr=%llu child level=%d",
|
||||
btrfs_header_bytenr(parent), slot, btrfs_header_level(parent),
|
||||
btrfs_header_bytenr(ret), btrfs_header_level(ret));
|
||||
free_extent_buffer(ret);
|
||||
return ERR_PTR(-EIO);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue