btrfs: check return value of btrfs_commit_transaction in relocation
authorJosef Bacik <josef@toxicpanda.com>
Fri, 12 Mar 2021 20:25:34 +0000 (15:25 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:22 +0000 (17:25 +0200)
There are a few places where we don't check the return value of
btrfs_commit_transaction in relocation.c.  Thankfully all these places
have straightforward error handling, so simply change all of the sites
at once.

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 fb5125c..b70be2a 100644 (file)
@@ -1924,7 +1924,7 @@ again:
        list_splice(&reloc_roots, &rc->reloc_roots);
 
        if (!err)
-               btrfs_commit_transaction(trans);
+               err = btrfs_commit_transaction(trans);
        else
                btrfs_end_transaction(trans);
        return err;
@@ -3496,8 +3496,7 @@ int prepare_to_relocate(struct reloc_control *rc)
                 */
                return PTR_ERR(trans);
        }
-       btrfs_commit_transaction(trans);
-       return 0;
+       return btrfs_commit_transaction(trans);
 }
 
 static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
@@ -3656,7 +3655,9 @@ restart:
                err = PTR_ERR(trans);
                goto out_free;
        }
-       btrfs_commit_transaction(trans);
+       ret = btrfs_commit_transaction(trans);
+       if (ret && !err)
+               err = ret;
 out_free:
        ret = clean_dirty_subvols(rc);
        if (ret < 0 && !err)