Commit c0901581 authored by Stefan Behrens's avatar Stefan Behrens Committed by Chris Mason

Btrfs: avoid I/O repair BUG() from btree_read_extent_buffer_pages()

From btree_read_extent_buffer_pages(), currently repair_io_failure()
can be called with mirror_num being zero when submit_one_bio() returned
an error before. This used to cause a BUG_ON(!mirror_num) in
repair_io_failure() and indeed this is not a case that needs the I/O
repair code to rewrite disk blocks.
This commit prevents calling repair_io_failure() in this case and thus
avoids the BUG_ON() and malfunction.
Signed-off-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent f4c738c2
...@@ -407,7 +407,7 @@ static int btree_read_extent_buffer_pages(struct btrfs_root *root, ...@@ -407,7 +407,7 @@ static int btree_read_extent_buffer_pages(struct btrfs_root *root,
break; break;
} }
if (failed && !ret) if (failed && !ret && failed_mirror)
repair_eb_io_failure(root, eb, failed_mirror); repair_eb_io_failure(root, eb, failed_mirror);
return ret; return ret;
......
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