]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jun 2023 08:35:26 +0000 (10:35 +0200)
commit fb686c6824dd6294ca772b92424b8fba666e7d00 upstream.

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>
Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/relocation.c

index 313547442a6ec37562b1ad1acfd0ce6ba89825b4..33700561c582a73ce775809a78655a945ee8a355 100644 (file)
@@ -2387,7 +2387,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;
@@ -4014,8 +4014,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)
@@ -4210,7 +4209,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:
        btrfs_free_block_rsv(fs_info, rc->block_rsv);
        btrfs_free_path(path);