Lines Matching refs:head

158 			   struct btrfs_delayed_ref_head *head)  in btrfs_delayed_ref_lock()  argument
164 if (mutex_trylock(&head->mutex)) in btrfs_delayed_ref_lock()
167 atomic_inc(&head->node.refs); in btrfs_delayed_ref_lock()
170 mutex_lock(&head->mutex); in btrfs_delayed_ref_lock()
172 if (!head->node.in_tree) { in btrfs_delayed_ref_lock()
173 mutex_unlock(&head->mutex); in btrfs_delayed_ref_lock()
174 btrfs_put_delayed_ref(&head->node); in btrfs_delayed_ref_lock()
177 btrfs_put_delayed_ref(&head->node); in btrfs_delayed_ref_lock()
183 struct btrfs_delayed_ref_head *head, in drop_delayed_ref() argument
187 head = btrfs_delayed_node_to_head(ref); in drop_delayed_ref()
188 rb_erase(&head->href_node, &delayed_refs->href_root); in drop_delayed_ref()
190 assert_spin_locked(&head->lock); in drop_delayed_ref()
202 struct btrfs_delayed_ref_head *head, in merge_ref() argument
209 next = list_first_entry(&head->ref_list, struct btrfs_delayed_ref_node, in merge_ref()
211 while (!done && &next->list != &head->ref_list) { in merge_ref()
248 drop_delayed_ref(trans, delayed_refs, head, next); in merge_ref()
251 drop_delayed_ref(trans, delayed_refs, head, ref); in merge_ref()
270 struct btrfs_delayed_ref_head *head) in btrfs_merge_delayed_refs() argument
275 assert_spin_locked(&head->lock); in btrfs_merge_delayed_refs()
277 if (list_empty(&head->ref_list)) in btrfs_merge_delayed_refs()
281 if (head->is_data) in btrfs_merge_delayed_refs()
294 ref = list_first_entry(&head->ref_list, struct btrfs_delayed_ref_node, in btrfs_merge_delayed_refs()
296 while (&ref->list != &head->ref_list) { in btrfs_merge_delayed_refs()
300 if (merge_ref(trans, delayed_refs, head, ref, seq)) { in btrfs_merge_delayed_refs()
301 if (list_empty(&head->ref_list)) in btrfs_merge_delayed_refs()
303 ref = list_first_entry(&head->ref_list, in btrfs_merge_delayed_refs()
341 struct btrfs_delayed_ref_head *head; in btrfs_select_ref_head() local
349 head = find_ref_head(&delayed_refs->href_root, start, 1); in btrfs_select_ref_head()
350 if (!head && !loop) { in btrfs_select_ref_head()
354 head = find_ref_head(&delayed_refs->href_root, start, 1); in btrfs_select_ref_head()
355 if (!head) in btrfs_select_ref_head()
357 } else if (!head && loop) { in btrfs_select_ref_head()
361 while (head->processing) { in btrfs_select_ref_head()
364 node = rb_next(&head->href_node); in btrfs_select_ref_head()
373 head = rb_entry(node, struct btrfs_delayed_ref_head, in btrfs_select_ref_head()
377 head->processing = 1; in btrfs_select_ref_head()
380 delayed_refs->run_delayed_start = head->node.bytenr + in btrfs_select_ref_head()
381 head->node.num_bytes; in btrfs_select_ref_head()
382 return head; in btrfs_select_ref_head()