Lines Matching full:ref

12 #include "delayed-ref.h"
13 #include "ref-verify.h"
46 * back to the delayed ref action. We hold the ref we are changing in the
54 struct ref_entry ref; member
62 * to it as well as all of the ref actions that have occurred to it. We never
174 struct ref_entry *ref) in insert_ref_entry() argument
178 node = rb_find_add(&ref->node, root, ref_entry_cmp); in insert_ref_entry()
200 btrfs_err(fs_info, " ref-verify: no stacktrace"); in __print_stack_trace()
213 btrfs_err(fs_info, " ref-verify: no stacktrace support"); in __print_stack_trace()
220 struct ref_entry *ref; in free_block_entry() local
231 ref = rb_entry(n, struct ref_entry, node); in free_block_entry()
232 rb_erase(&ref->node, &be->refs); in free_block_entry()
233 kfree(ref); in free_block_entry()
299 struct ref_entry *ref = NULL, *exist; in add_tree_block() local
301 ref = kmalloc(sizeof(struct ref_entry), GFP_NOFS); in add_tree_block()
302 if (!ref) in add_tree_block()
306 ref->root_objectid = 0; in add_tree_block()
308 ref->root_objectid = ref_root; in add_tree_block()
309 ref->parent = parent; in add_tree_block()
310 ref->owner = level; in add_tree_block()
311 ref->offset = 0; in add_tree_block()
312 ref->num_refs = 1; in add_tree_block()
316 kfree(ref); in add_tree_block()
329 exist = insert_ref_entry(&be->refs, ref); in add_tree_block()
332 kfree(ref); in add_tree_block()
344 struct ref_entry *ref; in add_shared_data_ref() local
346 ref = kzalloc(sizeof(struct ref_entry), GFP_NOFS); in add_shared_data_ref()
347 if (!ref) in add_shared_data_ref()
351 kfree(ref); in add_shared_data_ref()
356 ref->parent = parent; in add_shared_data_ref()
357 ref->num_refs = num_refs; in add_shared_data_ref()
358 if (insert_ref_entry(&be->refs, ref)) { in add_shared_data_ref()
360 btrfs_err(fs_info, "existing shared ref when reading from disk?"); in add_shared_data_ref()
361 kfree(ref); in add_shared_data_ref()
374 struct ref_entry *ref; in add_extent_data_ref() local
381 ref = kzalloc(sizeof(struct ref_entry), GFP_NOFS); in add_extent_data_ref()
382 if (!ref) in add_extent_data_ref()
386 kfree(ref); in add_extent_data_ref()
391 ref->parent = 0; in add_extent_data_ref()
392 ref->owner = owner; in add_extent_data_ref()
393 ref->root_objectid = ref_root; in add_extent_data_ref()
394 ref->offset = offset; in add_extent_data_ref()
395 ref->num_refs = num_refs; in add_extent_data_ref()
396 if (insert_ref_entry(&be->refs, ref)) { in add_extent_data_ref()
398 btrfs_err(fs_info, "existing ref when reading from disk?"); in add_extent_data_ref()
399 kfree(ref); in add_extent_data_ref()
474 "found extent owner ref without simple quotas enabled"); in process_extent_item()
603 " Ref action %d, root %llu, ref_root %llu, parent %llu, owner %llu, offset %llu, num_refs %llu", in dump_ref_action()
604 ra->action, ra->root, ra->ref.root_objectid, ra->ref.parent, in dump_ref_action()
605 ra->ref.owner, ra->ref.offset, ra->ref.num_refs); in dump_ref_action()
616 struct ref_entry *ref; in dump_block_entry() local
627 ref = rb_entry(n, struct ref_entry, node); in dump_block_entry()
629 " ref root %llu, parent %llu, owner %llu, offset %llu, num_refs %llu", in dump_block_entry()
630 ref->root_objectid, ref->parent, ref->owner, in dump_block_entry()
631 ref->offset, ref->num_refs); in dump_block_entry()
645 * Called when we modify a ref for a bytenr.
655 struct ref_entry *ref = NULL, *exist; in btrfs_ref_tree_mod() local
683 ref = kzalloc(sizeof(struct ref_entry), GFP_NOFS); in btrfs_ref_tree_mod()
685 if (!ra || !ref) { in btrfs_ref_tree_mod()
686 kfree(ref); in btrfs_ref_tree_mod()
692 ref->parent = parent; in btrfs_ref_tree_mod()
693 ref->owner = owner; in btrfs_ref_tree_mod()
694 ref->root_objectid = ref_root; in btrfs_ref_tree_mod()
695 ref->offset = offset; in btrfs_ref_tree_mod()
696 ref->num_refs = (action == BTRFS_DROP_DELAYED_REF) ? -1 : 1; in btrfs_ref_tree_mod()
698 memcpy(&ra->ref, ref, sizeof(struct ref_entry)); in btrfs_ref_tree_mod()
700 * Save the extra info from the delayed ref in the ref action to make it in btrfs_ref_tree_mod()
701 * easier to figure out what is happening. The real ref's we add to the in btrfs_ref_tree_mod()
702 * ref tree need to reflect what we save on disk so it matches any in btrfs_ref_tree_mod()
705 ra->ref.owner = owner; in btrfs_ref_tree_mod()
706 ra->ref.offset = offset; in btrfs_ref_tree_mod()
707 ra->ref.root_objectid = ref_root; in btrfs_ref_tree_mod()
723 * in root as if it really has a ref for this bytenr. in btrfs_ref_tree_mod()
727 kfree(ref); in btrfs_ref_tree_mod()
741 kfree(ref); in btrfs_ref_tree_mod()
760 kfree(ref); in btrfs_ref_tree_mod()
782 kfree(ref); in btrfs_ref_tree_mod()
792 kfree(ref); in btrfs_ref_tree_mod()
807 exist = insert_ref_entry(&be->refs, ref); in btrfs_ref_tree_mod()
812 "dropping a ref for a existing root that doesn't have a ref on the block"); in btrfs_ref_tree_mod()
815 kfree(ref); in btrfs_ref_tree_mod()
828 "attempting to add another ref for an existing ref on a tree block"); in btrfs_ref_tree_mod()
831 kfree(ref); in btrfs_ref_tree_mod()
835 kfree(ref); in btrfs_ref_tree_mod()
839 "dropping a ref for a root that doesn't have a ref on the block"); in btrfs_ref_tree_mod()
842 rb_erase(&ref->node, &be->refs); in btrfs_ref_tree_mod()
843 kfree(ref); in btrfs_ref_tree_mod()
887 /* Free up the ref cache */
970 /* Walk down all roots and build the ref tree, meant to be called at mount */
986 btrfs_warn(fs_info, "ref-verify: extent tree not available, disabling"); in btrfs_build_ref_tree()
1004 * because we could have run out of space for an inline ref, and in btrfs_build_ref_tree()
1005 * would have had to added a ref key item which may appear on a in btrfs_build_ref_tree()