]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: don't call btrfs_handle_fs_error() after failure to join transaction
authorFilipe Manana <fdmanana@suse.com>
Tue, 16 Dec 2025 12:31:11 +0000 (12:31 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:49:11 +0000 (07:49 +0100)
In btrfs_find_orphan_roots() we don't need to call btrfs_handle_fs_error()
if we fail to join a transaction. This is because we haven't done anything
yet regarding the current root and previous iterations of the loop dealt
with other roots, so there's nothing we need to undo. Instead log an error
message and return the error to the caller, which will result either in
a mount failure or remount failure (the only contexts it's called from).

Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.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/root-tree.c

index 40f9bc9485e86b2e8bba94e3ae7a84a8d6997d17..a6880ac5f0602c59941b03e64c7ba36c33a86e62 100644 (file)
@@ -264,8 +264,9 @@ int btrfs_find_orphan_roots(struct btrfs_fs_info *fs_info)
                        trans = btrfs_join_transaction(tree_root);
                        if (IS_ERR(trans)) {
                                ret = PTR_ERR(trans);
-                               btrfs_handle_fs_error(fs_info, ret,
-                                           "Failed to start trans to delete orphan item");
+                               btrfs_err(fs_info,
+                         "failed to join transaction to delete orphan item: %d",
+                                         ret);
                                return ret;
                        }
                        ret = btrfs_del_orphan_item(trans, tree_root, root_objectid);