btrfs: don't call btrfs_handle_fs_error() after failure to delete orphan item
authorFilipe Manana <fdmanana@suse.com>
Tue, 16 Dec 2025 12:41:16 +0000 (12:41 +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 delete the orphan item for the current root. 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 a6880ac..37a4173 100644 (file)
@@ -272,8 +272,8 @@ int btrfs_find_orphan_roots(struct btrfs_fs_info *fs_info)
                        ret = btrfs_del_orphan_item(trans, tree_root, root_objectid);
                        btrfs_end_transaction(trans);
                        if (ret) {
-                               btrfs_handle_fs_error(fs_info, ret,
-                                           "Failed to delete root orphan item");
+                               btrfs_err(fs_info,
+                                 "failed to delete root orphan item: %d", ret);
                                return ret;
                        }
                        continue;