Lines Matching refs:ref

199 	struct __prelim_ref *ref;  in __add_prelim_ref()  local
204 ref = kmem_cache_alloc(btrfs_prelim_ref_cache, gfp_mask); in __add_prelim_ref()
205 if (!ref) in __add_prelim_ref()
208 ref->root_id = root_id; in __add_prelim_ref()
210 ref->key_for_search = *key; in __add_prelim_ref()
230 if (ref->key_for_search.type == BTRFS_EXTENT_DATA_KEY && in __add_prelim_ref()
231 ref->key_for_search.offset >= LLONG_MAX) in __add_prelim_ref()
232 ref->key_for_search.offset = 0; in __add_prelim_ref()
234 memset(&ref->key_for_search, 0, sizeof(ref->key_for_search)); in __add_prelim_ref()
237 ref->inode_list = NULL; in __add_prelim_ref()
238 ref->level = level; in __add_prelim_ref()
239 ref->count = count; in __add_prelim_ref()
240 ref->parent = parent; in __add_prelim_ref()
241 ref->wanted_disk_byte = wanted_disk_byte; in __add_prelim_ref()
242 list_add_tail(&ref->list, head); in __add_prelim_ref()
248 struct ulist *parents, struct __prelim_ref *ref, in add_all_parents() argument
256 struct btrfs_key *key_for_search = &ref->key_for_search; in add_all_parents()
260 u64 wanted_disk_byte = ref->wanted_disk_byte; in add_all_parents()
340 struct __prelim_ref *ref, in __resolve_indirect_ref() argument
349 int level = ref->level; in __resolve_indirect_ref()
352 root_key.objectid = ref->root_id; in __resolve_indirect_ref()
385 ret = btrfs_search_slot(NULL, root, &ref->key_for_search, path, in __resolve_indirect_ref()
388 ret = btrfs_search_old_slot(root, &ref->key_for_search, path, in __resolve_indirect_ref()
396 ref->root_id, level, ref->count, ret, in __resolve_indirect_ref()
397 ref->key_for_search.objectid, ref->key_for_search.type, in __resolve_indirect_ref()
398 ref->key_for_search.offset); in __resolve_indirect_ref()
412 ret = add_all_parents(root, path, parents, ref, level, time_seq, in __resolve_indirect_ref()
431 struct __prelim_ref *ref; in __resolve_indirect_refs() local
447 list_for_each_entry_safe(ref, ref_safe, head, list) { in __resolve_indirect_refs()
448 if (ref->parent) /* already direct */ in __resolve_indirect_refs()
450 if (ref->count == 0) in __resolve_indirect_refs()
452 if (root_objectid && ref->root_id != root_objectid) { in __resolve_indirect_refs()
456 err = __resolve_indirect_ref(fs_info, path, time_seq, ref, in __resolve_indirect_refs()
473 ref->parent = node ? node->val : 0; in __resolve_indirect_refs()
474 ref->inode_list = node ? in __resolve_indirect_refs()
485 memcpy(new_ref, ref, sizeof(*ref)); in __resolve_indirect_refs()
489 list_add(&new_ref->list, &ref->list); in __resolve_indirect_refs()
527 struct __prelim_ref *ref; in __add_missing_keys() local
528 ref = list_entry(pos, struct __prelim_ref, list); in __add_missing_keys()
530 if (ref->parent) in __add_missing_keys()
532 if (ref->key_for_search.type) in __add_missing_keys()
534 BUG_ON(!ref->wanted_disk_byte); in __add_missing_keys()
535 eb = read_tree_block(fs_info->tree_root, ref->wanted_disk_byte, in __add_missing_keys()
545 btrfs_item_key_to_cpu(eb, &ref->key_for_search, 0); in __add_missing_keys()
547 btrfs_node_key_to_cpu(eb, &ref->key_for_search, 0); in __add_missing_keys()
652 struct btrfs_delayed_tree_ref *ref; in __add_delayed_refs() local
654 ref = btrfs_delayed_node_to_tree_ref(node); in __add_delayed_refs()
655 ret = __add_prelim_ref(prefs, ref->root, &op_key, in __add_delayed_refs()
656 ref->level + 1, 0, node->bytenr, in __add_delayed_refs()
661 struct btrfs_delayed_tree_ref *ref; in __add_delayed_refs() local
663 ref = btrfs_delayed_node_to_tree_ref(node); in __add_delayed_refs()
665 ref->level + 1, ref->parent, in __add_delayed_refs()
671 struct btrfs_delayed_data_ref *ref; in __add_delayed_refs() local
672 ref = btrfs_delayed_node_to_data_ref(node); in __add_delayed_refs()
674 key.objectid = ref->objectid; in __add_delayed_refs()
676 key.offset = ref->offset; in __add_delayed_refs()
682 if (inum && ref->objectid != inum) { in __add_delayed_refs()
687 ret = __add_prelim_ref(prefs, ref->root, &key, 0, 0, in __add_delayed_refs()
693 struct btrfs_delayed_data_ref *ref; in __add_delayed_refs() local
695 ref = btrfs_delayed_node_to_data_ref(node); in __add_delayed_refs()
697 ref->parent, node->bytenr, in __add_delayed_refs()
942 struct __prelim_ref *ref; local
1062 ref = list_first_entry(&prefs, struct __prelim_ref, list);
1063 WARN_ON(ref->count < 0);
1064 if (roots && ref->count && ref->root_id && ref->parent == 0) {
1065 if (root_objectid && ref->root_id != root_objectid) {
1071 ret = ulist_add(roots, ref->root_id, 0, GFP_NOFS);
1075 if (ref->count && ref->parent) {
1076 if (extent_item_pos && !ref->inode_list &&
1077 ref->level == 0) {
1081 ref->parent, 0);
1098 ref->inode_list = eie;
1100 ret = ulist_add_merge_ptr(refs, ref->parent,
1101 ref->inode_list,
1113 eie->next = ref->inode_list;
1117 list_del(&ref->list);
1118 kmem_cache_free(btrfs_prelim_ref_cache, ref);
1124 ref = list_first_entry(&prefs, struct __prelim_ref, list);
1125 list_del(&ref->list);
1126 kmem_cache_free(btrfs_prelim_ref_cache, ref);
1129 ref = list_first_entry(&prefs_delayed, struct __prelim_ref,
1131 list_del(&ref->list);
1132 kmem_cache_free(btrfs_prelim_ref_cache, ref);