aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 7f8377871283..695363ae1c28 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -4062,6 +4062,7 @@ static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
4062 4062
4063 while ((node = rb_first(&delayed_refs->href_root)) != NULL) { 4063 while ((node = rb_first(&delayed_refs->href_root)) != NULL) {
4064 struct btrfs_delayed_ref_head *head; 4064 struct btrfs_delayed_ref_head *head;
4065 struct btrfs_delayed_ref_node *tmp;
4065 bool pin_bytes = false; 4066 bool pin_bytes = false;
4066 4067
4067 head = rb_entry(node, struct btrfs_delayed_ref_head, 4068 head = rb_entry(node, struct btrfs_delayed_ref_head,
@@ -4077,11 +4078,10 @@ static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
4077 continue; 4078 continue;
4078 } 4079 }
4079 spin_lock(&head->lock); 4080 spin_lock(&head->lock);
4080 while ((node = rb_first(&head->ref_root)) != NULL) { 4081 list_for_each_entry_safe_reverse(ref, tmp, &head->ref_list,
4081 ref = rb_entry(node, struct btrfs_delayed_ref_node, 4082 list) {
4082 rb_node);
4083 ref->in_tree = 0; 4083 ref->in_tree = 0;
4084 rb_erase(&ref->rb_node, &head->ref_root); 4084 list_del(&ref->list);
4085 atomic_dec(&delayed_refs->num_entries); 4085 atomic_dec(&delayed_refs->num_entries);
4086 btrfs_put_delayed_ref(ref); 4086 btrfs_put_delayed_ref(ref);
4087 } 4087 }