]> 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:57:14 +0000 (10:57 +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 06c6a66a991f26fcd1ba5e47ff38a960d2f1149d..82d0a13ccc54510d97ad899dcb0ab31e894f86a6 100644 (file)
@@ -2341,7 +2341,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;
@@ -3930,8 +3930,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)
@@ -4097,7 +4096,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);