btrfs: do proper error handling in btrfs_update_reloc_root
authorJosef Bacik <josef@toxicpanda.com>
Fri, 12 Mar 2021 20:25:20 +0000 (15:25 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:21 +0000 (17:25 +0200)
We call btrfs_update_root in btrfs_update_reloc_root, which can fail for
all sorts of reasons, including IO errors.  Instead of panicing the box
lets return the error, now that all callers properly handle those
errors.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/relocation.c

index ca97412..489097f 100644 (file)
@@ -903,7 +903,7 @@ int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
        int ret;
 
        if (!have_reloc_root(root))
-               goto out;
+               return 0;
 
        reloc_root = root->reloc_root;
        root_item = &reloc_root->root_item;
@@ -936,10 +936,8 @@ int btrfs_update_reloc_root(struct btrfs_trans_handle *trans,
 
        ret = btrfs_update_root(trans, fs_info->tree_root,
                                &reloc_root->root_key, root_item);
-       BUG_ON(ret);
        btrfs_put_root(reloc_root);
-out:
-       return 0;
+       return ret;
 }
 
 /*