btrfs: Enhance error output for write time tree checker
Unlike read time tree checker errors, write time error can't be inspected by "btrfs inspect dump-tree", so we need extra information to determine what's going wrong. The patch will add the following output for write time tree checker error: - The content of the offending tree block To help determining if it's a false alert. - Kernel WARN_ON() for debug build This is helpful for us to detect unexpected write time tree checker error, especially fstests could catch the dmesg. Since the WARN_ON() is only triggered for write time tree checker, test cases utilizing dm-error won't trigger this WARN_ON(), thus no extra noise. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
80d7fd1e09
commit
c06631b0d8
|
@ -545,9 +545,11 @@ static int csum_dirty_buffer(struct btrfs_fs_info *fs_info, struct page *page)
|
||||||
ret = btrfs_check_leaf_full(eb);
|
ret = btrfs_check_leaf_full(eb);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
btrfs_print_tree(eb, 0);
|
||||||
btrfs_err(fs_info,
|
btrfs_err(fs_info,
|
||||||
"block=%llu write time tree block corruption detected",
|
"block=%llu write time tree block corruption detected",
|
||||||
eb->start);
|
eb->start);
|
||||||
|
WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
write_extent_buffer(eb, result, 0, csum_size);
|
write_extent_buffer(eb, result, 0, csum_size);
|
||||||
|
|
Loading…
Reference in New Issue