mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
Btrfs: EIO when we fail to read tree roots
If we just get a plain IO error when we read tree roots, the code wasn't properly sending that error up the chain. This allowed mounts to continue when they should failed, and allowed operations on partially setup root structs. The end result was usually oopsen on spinlocks that hadn't been spun up correctly. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
3dd1462e82
commit
68433b73b1
@ -1007,7 +1007,10 @@ static int find_and_setup_root(struct btrfs_root *tree_root,
|
||||
blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item));
|
||||
root->node = read_tree_block(root, btrfs_root_bytenr(&root->root_item),
|
||||
blocksize, generation);
|
||||
BUG_ON(!root->node);
|
||||
if (!root->node || !btrfs_buffer_uptodate(root->node, generation)) {
|
||||
free_extent_buffer(root->node);
|
||||
return -EIO;
|
||||
}
|
||||
root->commit_root = btrfs_root_node(root);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user