run_next_block() ignores the return value of read_tree_block() and always returns success status. This might cause deal_root_from_list() to loop infinitely when reading metadata block fails. This bug fixes the issue by extracting and returning the error code from the return value of read_tree_block().
Bug ID : https://bugzilla.kernel.org/show_bug.cgi?id=155551 Signed-off-by: Praveen K Pandey <prav...@linux.vnet.ibm.com> --- cmds-check.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cmds-check.c b/cmds-check.c index 17b7efb..40e3c99 100644 --- a/cmds-check.c +++ b/cmds-check.c @@ -7625,6 +7625,7 @@ static int run_next_block(struct btrfs_root *root, if (!extent_buffer_uptodate(buf)) { record_bad_block_io(root->fs_info, extent_cache, bytenr, size); + ret = PTR_ERR(buf); goto out; } -- 2.5.5 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html