]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: avoid transaction commit on error in insert_balance_item()
authorFilipe Manana <fdmanana@suse.com>
Wed, 17 Dec 2025 15:53:59 +0000 (15:53 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:50:23 +0000 (07:50 +0100)
There's no point in committing the transaction if we failed to insert the
balance item, since we haven't done anything else after we started/joined
the transaction. Also stop using two variables for tracking the return
value and use only 'ret'.

Reviewed-by: Daniel Vacek <neelx@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index a89243a57fde4a9dc1d893f0b6a9206328fd9faa..a541cd30c6b8b496e5b2993304edff425b067d36 100644 (file)
@@ -3644,7 +3644,7 @@ static int insert_balance_item(struct btrfs_fs_info *fs_info,
        struct btrfs_path *path;
        struct extent_buffer *leaf;
        struct btrfs_key key;
-       int ret, err;
+       int ret;
 
        path = btrfs_alloc_path();
        if (!path)
@@ -3679,9 +3679,11 @@ static int insert_balance_item(struct btrfs_fs_info *fs_info,
        btrfs_set_balance_flags(leaf, item, bctl->flags);
 out:
        btrfs_free_path(path);
-       err = btrfs_commit_transaction(trans);
-       if (err && !ret)
-               ret = err;
+       if (ret == 0)
+               ret = btrfs_commit_transaction(trans);
+       else
+               btrfs_end_transaction(trans);
+
        return ret;
 }