Lines Matching refs:ref
373 struct btrfs_delayed_ref_node *ref) in drop_delayed_ref() argument
376 rb_erase_cached(&ref->ref_node, &head->ref_tree); in drop_delayed_ref()
377 RB_CLEAR_NODE(&ref->ref_node); in drop_delayed_ref()
378 if (!list_empty(&ref->add_list)) in drop_delayed_ref()
379 list_del(&ref->add_list); in drop_delayed_ref()
380 btrfs_put_delayed_ref(ref); in drop_delayed_ref()
387 struct btrfs_delayed_ref_node *ref, in merge_ref() argument
391 struct rb_node *node = rb_next(&ref->ref_node); in merge_ref()
401 if (comp_refs(ref, next, false)) in merge_ref()
404 if (ref->action == next->action) { in merge_ref()
407 if (ref->ref_mod < next->ref_mod) { in merge_ref()
408 swap(ref, next); in merge_ref()
415 ref->ref_mod += mod; in merge_ref()
416 if (ref->ref_mod == 0) { in merge_ref()
417 drop_delayed_ref(fs_info, delayed_refs, head, ref); in merge_ref()
423 WARN_ON(ref->type == BTRFS_TREE_BLOCK_REF_KEY || in merge_ref()
424 ref->type == BTRFS_SHARED_BLOCK_REF_KEY); in merge_ref()
435 struct btrfs_delayed_ref_node *ref; in btrfs_merge_delayed_refs() local
452 ref = rb_entry(node, struct btrfs_delayed_ref_node, ref_node); in btrfs_merge_delayed_refs()
453 if (seq && ref->seq >= seq) in btrfs_merge_delayed_refs()
455 if (merge_ref(fs_info, delayed_refs, head, ref, seq)) in btrfs_merge_delayed_refs()
551 struct btrfs_delayed_ref_node *ref; in btrfs_select_delayed_ref() local
569 ref = rb_entry(rb_first_cached(&head->ref_tree), in btrfs_select_delayed_ref()
571 ASSERT(list_empty(&ref->add_list)); in btrfs_select_delayed_ref()
572 return ref; in btrfs_select_delayed_ref()
584 struct btrfs_delayed_ref_node *ref) in insert_delayed_ref() argument
591 exist = tree_insert(&href->ref_tree, ref); in insert_delayed_ref()
593 if (ref->action == BTRFS_ADD_DELAYED_REF) in insert_delayed_ref()
594 list_add_tail(&ref->add_list, &href->ref_add_list); in insert_delayed_ref()
601 if (exist->action == ref->action) { in insert_delayed_ref()
602 mod = ref->ref_mod; in insert_delayed_ref()
605 if (exist->ref_mod < ref->ref_mod) { in insert_delayed_ref()
606 exist->action = ref->action; in insert_delayed_ref()
608 exist->ref_mod = ref->ref_mod; in insert_delayed_ref()
609 if (ref->action == BTRFS_ADD_DELAYED_REF) in insert_delayed_ref()
612 else if (ref->action == BTRFS_DROP_DELAYED_REF) { in insert_delayed_ref()
619 mod = -ref->ref_mod; in insert_delayed_ref()
922 struct btrfs_delayed_ref_node *ref, in init_delayed_ref_common() argument
934 refcount_set(&ref->refs, 1); in init_delayed_ref_common()
935 ref->bytenr = generic_ref->bytenr; in init_delayed_ref_common()
936 ref->num_bytes = generic_ref->num_bytes; in init_delayed_ref_common()
937 ref->ref_mod = 1; in init_delayed_ref_common()
938 ref->action = action; in init_delayed_ref_common()
939 ref->seq = seq; in init_delayed_ref_common()
940 ref->type = btrfs_ref_type(generic_ref); in init_delayed_ref_common()
941 ref->ref_root = generic_ref->ref_root; in init_delayed_ref_common()
942 ref->parent = generic_ref->parent; in init_delayed_ref_common()
943 RB_CLEAR_NODE(&ref->ref_node); in init_delayed_ref_common()
944 INIT_LIST_HEAD(&ref->add_list); in init_delayed_ref_common()
947 ref->data_ref = generic_ref->data_ref; in init_delayed_ref_common()
949 ref->tree_ref = generic_ref->tree_ref; in init_delayed_ref_common()
1159 void btrfs_put_delayed_ref(struct btrfs_delayed_ref_node *ref) in btrfs_put_delayed_ref() argument
1161 if (refcount_dec_and_test(&ref->refs)) { in btrfs_put_delayed_ref()
1162 WARN_ON(!RB_EMPTY_NODE(&ref->ref_node)); in btrfs_put_delayed_ref()
1163 kmem_cache_free(btrfs_delayed_ref_node_cachep, ref); in btrfs_put_delayed_ref()
1271 struct btrfs_delayed_ref_node *ref; in btrfs_destroy_delayed_refs() local
1273 ref = rb_entry(n, struct btrfs_delayed_ref_node, ref_node); in btrfs_destroy_delayed_refs()
1274 drop_delayed_ref(fs_info, delayed_refs, head, ref); in btrfs_destroy_delayed_refs()