forked from luck/tmp_suning_uos_patched
btrfs: rework error detection in init_tree_roots
To avoid duplicating 3 lines of code the error detection logic in init_tree_roots is somewhat quirky. It first checks for the presence of any error condition, then checks for the specific condition to perform any specific actions. That's spurious because directly checking for each respective error condition and doing the necessary steps is more obvious. While at it change the -EUCLEAN to -EIO in case the extent buffer is not read correctly, this is in line with other sites which return -EIO when the eb couldn't be read. Additionally it results in smaller code and the code reads more linearly: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-95 (-95) Function old new delta open_ctree 17243 17148 -95 Total: Before=113104, After=113009, chg -0.08% Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
e85fde5162
commit
217f5004fe
|
@ -2623,18 +2623,17 @@ static int __cold init_tree_roots(struct btrfs_fs_info *fs_info)
|
|||
level = btrfs_super_root_level(sb);
|
||||
tree_root->node = read_tree_block(fs_info, btrfs_super_root(sb),
|
||||
generation, level, NULL);
|
||||
if (IS_ERR(tree_root->node) ||
|
||||
!extent_buffer_uptodate(tree_root->node)) {
|
||||
if (IS_ERR(tree_root->node)) {
|
||||
handle_error = true;
|
||||
ret = PTR_ERR(tree_root->node);
|
||||
tree_root->node = NULL;
|
||||
btrfs_warn(fs_info, "couldn't read tree root");
|
||||
continue;
|
||||
|
||||
if (IS_ERR(tree_root->node)) {
|
||||
ret = PTR_ERR(tree_root->node);
|
||||
tree_root->node = NULL;
|
||||
} else if (!extent_buffer_uptodate(tree_root->node)) {
|
||||
ret = -EUCLEAN;
|
||||
}
|
||||
|
||||
btrfs_warn(fs_info, "failed to read tree root");
|
||||
} else if (!extent_buffer_uptodate(tree_root->node)) {
|
||||
handle_error = true;
|
||||
ret = -EIO;
|
||||
btrfs_warn(fs_info, "error while reading tree root");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user