Lines Matching refs:ref
264 struct btrfs_delayed_ref_node *ref) in drop_delayed_ref() argument
266 if (btrfs_delayed_ref_is_head(ref)) { in drop_delayed_ref()
267 head = btrfs_delayed_node_to_head(ref); in drop_delayed_ref()
271 rb_erase(&ref->rb_node, &head->ref_root); in drop_delayed_ref()
273 ref->in_tree = 0; in drop_delayed_ref()
274 btrfs_put_delayed_ref(ref); in drop_delayed_ref()
283 struct btrfs_delayed_ref_node *ref, u64 seq) in merge_ref() argument
289 node = rb_next(&ref->rb_node); in merge_ref()
297 if (comp_entry(ref, next, 0)) in merge_ref()
300 if (ref->action == next->action) { in merge_ref()
303 if (ref->ref_mod < next->ref_mod) { in merge_ref()
306 tmp = ref; in merge_ref()
307 ref = next; in merge_ref()
315 ref->ref_mod += mod; in merge_ref()
316 if (ref->ref_mod == 0) { in merge_ref()
317 drop_delayed_ref(trans, delayed_refs, head, ref); in merge_ref()
324 WARN_ON(ref->type == BTRFS_TREE_BLOCK_REF_KEY || in merge_ref()
325 ref->type == BTRFS_SHARED_BLOCK_REF_KEY); in merge_ref()
359 struct btrfs_delayed_ref_node *ref; in btrfs_merge_delayed_refs() local
361 ref = rb_entry(node, struct btrfs_delayed_ref_node, in btrfs_merge_delayed_refs()
364 if (seq && ref->seq >= seq) in btrfs_merge_delayed_refs()
366 if (merge_ref(trans, delayed_refs, head, ref, seq)) in btrfs_merge_delayed_refs()
369 node = rb_next(&ref->rb_node); in btrfs_merge_delayed_refs()
497 struct btrfs_delayed_ref_head *ref; in update_existing_head_ref() local
501 ref = btrfs_delayed_node_to_head(update); in update_existing_head_ref()
502 BUG_ON(existing_ref->is_data != ref->is_data); in update_existing_head_ref()
505 if (ref->must_insert_reserved) { in update_existing_head_ref()
513 existing_ref->must_insert_reserved = ref->must_insert_reserved; in update_existing_head_ref()
523 if (ref->extent_op) { in update_existing_head_ref()
525 existing_ref->extent_op = ref->extent_op; in update_existing_head_ref()
527 if (ref->extent_op->update_key) { in update_existing_head_ref()
529 &ref->extent_op->key, in update_existing_head_ref()
530 sizeof(ref->extent_op->key)); in update_existing_head_ref()
533 if (ref->extent_op->update_flags) { in update_existing_head_ref()
535 ref->extent_op->flags_to_set; in update_existing_head_ref()
538 btrfs_free_delayed_extent_op(ref->extent_op); in update_existing_head_ref()
571 struct btrfs_delayed_ref_node *ref, u64 bytenr, in add_delayed_ref_head() argument
608 atomic_set(&ref->refs, 1); in add_delayed_ref_head()
609 ref->bytenr = bytenr; in add_delayed_ref_head()
610 ref->num_bytes = num_bytes; in add_delayed_ref_head()
611 ref->ref_mod = count_mod; in add_delayed_ref_head()
612 ref->type = 0; in add_delayed_ref_head()
613 ref->action = 0; in add_delayed_ref_head()
614 ref->is_head = 1; in add_delayed_ref_head()
615 ref->in_tree = 1; in add_delayed_ref_head()
616 ref->seq = 0; in add_delayed_ref_head()
618 head_ref = btrfs_delayed_node_to_head(ref); in add_delayed_ref_head()
628 trace_add_delayed_ref_head(ref, head_ref, action); in add_delayed_ref_head()
633 update_existing_head_ref(delayed_refs, &existing->node, ref); in add_delayed_ref_head()
658 struct btrfs_delayed_ref_node *ref, u64 bytenr, in add_delayed_tree_ref() argument
675 atomic_set(&ref->refs, 1); in add_delayed_tree_ref()
676 ref->bytenr = bytenr; in add_delayed_tree_ref()
677 ref->num_bytes = num_bytes; in add_delayed_tree_ref()
678 ref->ref_mod = 1; in add_delayed_tree_ref()
679 ref->action = action; in add_delayed_tree_ref()
680 ref->is_head = 0; in add_delayed_tree_ref()
681 ref->in_tree = 1; in add_delayed_tree_ref()
682 ref->no_quota = no_quota; in add_delayed_tree_ref()
683 ref->seq = seq; in add_delayed_tree_ref()
685 full_ref = btrfs_delayed_node_to_tree_ref(ref); in add_delayed_tree_ref()
689 ref->type = BTRFS_SHARED_BLOCK_REF_KEY; in add_delayed_tree_ref()
691 ref->type = BTRFS_TREE_BLOCK_REF_KEY; in add_delayed_tree_ref()
694 trace_add_delayed_tree_ref(ref, full_ref, action); in add_delayed_tree_ref()
697 existing = tree_insert(&head_ref->ref_root, &ref->rb_node); in add_delayed_tree_ref()
700 ref); in add_delayed_tree_ref()
720 struct btrfs_delayed_ref_node *ref, u64 bytenr, in add_delayed_data_ref() argument
738 atomic_set(&ref->refs, 1); in add_delayed_data_ref()
739 ref->bytenr = bytenr; in add_delayed_data_ref()
740 ref->num_bytes = num_bytes; in add_delayed_data_ref()
741 ref->ref_mod = 1; in add_delayed_data_ref()
742 ref->action = action; in add_delayed_data_ref()
743 ref->is_head = 0; in add_delayed_data_ref()
744 ref->in_tree = 1; in add_delayed_data_ref()
745 ref->no_quota = no_quota; in add_delayed_data_ref()
746 ref->seq = seq; in add_delayed_data_ref()
748 full_ref = btrfs_delayed_node_to_data_ref(ref); in add_delayed_data_ref()
752 ref->type = BTRFS_SHARED_DATA_REF_KEY; in add_delayed_data_ref()
754 ref->type = BTRFS_EXTENT_DATA_REF_KEY; in add_delayed_data_ref()
759 trace_add_delayed_data_ref(ref, full_ref, action); in add_delayed_data_ref()
762 existing = tree_insert(&head_ref->ref_root, &ref->rb_node); in add_delayed_data_ref()
765 ref); in add_delayed_data_ref()
790 struct btrfs_delayed_tree_ref *ref; in btrfs_add_delayed_tree_ref() local
798 ref = kmem_cache_alloc(btrfs_delayed_tree_ref_cachep, GFP_NOFS); in btrfs_add_delayed_tree_ref()
799 if (!ref) in btrfs_add_delayed_tree_ref()
804 kmem_cache_free(btrfs_delayed_tree_ref_cachep, ref); in btrfs_add_delayed_tree_ref()
820 add_delayed_tree_ref(fs_info, trans, head_ref, &ref->node, bytenr, in btrfs_add_delayed_tree_ref()
839 struct btrfs_delayed_data_ref *ref; in btrfs_add_delayed_data_ref() local
847 ref = kmem_cache_alloc(btrfs_delayed_data_ref_cachep, GFP_NOFS); in btrfs_add_delayed_data_ref()
848 if (!ref) in btrfs_add_delayed_data_ref()
853 kmem_cache_free(btrfs_delayed_data_ref_cachep, ref); in btrfs_add_delayed_data_ref()
869 add_delayed_data_ref(fs_info, trans, head_ref, &ref->node, bytenr, in btrfs_add_delayed_data_ref()