]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
btrfs: remove duplicated code to drop delayed ref during transaction abort
authorFilipe Manana <fdmanana@suse.com>
Mon, 21 Oct 2024 11:10:26 +0000 (12:10 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 11 Nov 2024 13:34:20 +0000 (14:34 +0100)
When destroying delayed refs during a transaction abort, we have open
coded the removal of a delayed ref, which is also done by the static
helper function drop_delayed_ref(). So remove that duplicated code and
use drop_delayed_ref() instead.

Reviewed-by: Boris Burkov <boris@bur.io>
Reviewed-by: Qu Wenruo <wqu@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/delayed-ref.c

index 4a4278dfe511c1359cec2693485a360057e7882f..e8291316c68353544fd7055f370e0619368f65b2 100644 (file)
@@ -1261,13 +1261,7 @@ void btrfs_destroy_delayed_refs(struct btrfs_transaction *trans)
                        struct btrfs_delayed_ref_node *ref;
 
                        ref = rb_entry(n, struct btrfs_delayed_ref_node, ref_node);
-                       rb_erase_cached(&ref->ref_node, &head->ref_tree);
-                       RB_CLEAR_NODE(&ref->ref_node);
-                       if (!list_empty(&ref->add_list))
-                               list_del(&ref->add_list);
-                       atomic_dec(&delayed_refs->num_entries);
-                       btrfs_put_delayed_ref(ref);
-                       btrfs_delayed_refs_rsv_release(fs_info, 1, 0);
+                       drop_delayed_ref(fs_info, delayed_refs, head, ref);
                }
                if (head->must_insert_reserved)
                        pin_bytes = true;