From e319aa1490c8b5382fe1c3094cdec13ae1c966e0 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Fri, 15 Jul 2016 16:46:08 +0200 Subject: [PATCH] btrfs-progs: corrupt block: handle block mapping errors in debug_corrupt_block Signed-off-by: David Sterba --- btrfs-corrupt-block.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/btrfs-corrupt-block.c b/btrfs-corrupt-block.c index f2cc42c7..86d4d0bf 100644 --- a/btrfs-corrupt-block.c +++ b/btrfs-corrupt-block.c @@ -34,7 +34,7 @@ #define FIELD_BUF_LEN 80 -static void debug_corrupt_block(struct extent_buffer *eb, +static int debug_corrupt_block(struct extent_buffer *eb, struct btrfs_root *root, u64 bytenr, u32 blocksize, u64 copy) { int ret; @@ -49,7 +49,13 @@ static void debug_corrupt_block(struct extent_buffer *eb, ret = btrfs_map_block(&root->fs_info->mapping_tree, READ, eb->start, &length, &multi, mirror_num, NULL); - BUG_ON(ret); + if (ret) { + error("cannot map block %llu length %llu mirror %d: %d", + (unsigned long long)eb->start, + (unsigned long long)length, + mirror_num, ret); + return ret; + } device = multi->stripes[0].dev; eb->fd = device->fd; device->total_ios++; @@ -79,6 +85,8 @@ static void debug_corrupt_block(struct extent_buffer *eb, if (mirror_num > num_copies) break; } + + return 0; } static void print_usage(int ret)