Commit c06631b0 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

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: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 80d7fd1e
...@@ -545,9 +545,11 @@ static int csum_dirty_buffer(struct btrfs_fs_info *fs_info, struct page *page) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment