]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: abort transaction if we fail to update inode in log replay dir fixup
authorFilipe Manana <fdmanana@suse.com>
Wed, 3 Sep 2025 16:43:04 +0000 (17:43 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 23 Sep 2025 06:49:21 +0000 (08:49 +0200)
If we fail to update the inode at link_to_fixup_dir(), we don't abort the
transaction and propagate the error up the call chain, which makes it hard
to pinpoint the error to the inode update. So abort the transaction if the
inode update call fails, so that if it happens we known immediately.

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/tree-log.c

index 7b91248b38dc946c29bf911fd3494d91b982b5d5..83b79023baaed5995905166b4579f00a6e638d43 100644 (file)
@@ -1849,6 +1849,8 @@ static noinline int link_to_fixup_dir(struct walk_control *wc, u64 objectid)
                else
                        inc_nlink(vfs_inode);
                ret = btrfs_update_inode(trans, inode);
+               if (ret)
+                       btrfs_abort_transaction(trans, ret);
        } else if (ret == -EEXIST) {
                ret = 0;
        } else {