summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2024-10-18 11:29:37 +0100
committerDavid Sterba <dsterba@suse.com>2024-11-11 14:34:20 +0100
commit055903c4e7fa2945b1b4014726e7268056047242 (patch)
treea2e87168887c2089ad96f156d0d25380f75b176d
parent8d07a8f4c6415c71a9e0232aef8c2aee39620fca (diff)
btrfs: use helper to find first ref head at btrfs_destroy_delayed_refs()
Instead of open coding it, use the find_first_ref_head() helper at btrfs_destroy_delayed_refs(). This avoids duplicating the logic, specially with the upcoming changes in subsequent patches. 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>
-rw-r--r--fs/btrfs/delayed-ref.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c
index e8291316c683..dc3a29f3c357 100644
--- a/fs/btrfs/delayed-ref.c
+++ b/fs/btrfs/delayed-ref.c
@@ -1241,18 +1241,19 @@ bool btrfs_find_delayed_tree_ref(struct btrfs_delayed_ref_head *head,
void btrfs_destroy_delayed_refs(struct btrfs_transaction *trans)
{
- struct rb_node *node;
struct btrfs_delayed_ref_root *delayed_refs = &trans->delayed_refs;
struct btrfs_fs_info *fs_info = trans->fs_info;
spin_lock(&delayed_refs->lock);
- while ((node = rb_first_cached(&delayed_refs->href_root)) != NULL) {
+ while (true) {
struct btrfs_delayed_ref_head *head;
struct rb_node *n;
bool pin_bytes = false;
- head = rb_entry(node, struct btrfs_delayed_ref_head,
- href_node);
+ head = find_first_ref_head(delayed_refs);
+ if (!head)
+ break;
+
if (btrfs_delayed_ref_lock(delayed_refs, head))
continue;