Lines Matching refs:be

76 					      struct block_entry *be)  in insert_block_entry()  argument
85 if (entry->bytenr > be->bytenr) in insert_block_entry()
87 else if (entry->bytenr < be->bytenr) in insert_block_entry()
93 rb_link_node(&be->node, parent_node, p); in insert_block_entry()
94 rb_insert_color(&be->node, root); in insert_block_entry()
243 static void free_block_entry(struct block_entry *be) in free_block_entry() argument
250 while ((n = rb_first(&be->roots))) { in free_block_entry()
252 rb_erase(&re->node, &be->roots); in free_block_entry()
256 while((n = rb_first(&be->refs))) { in free_block_entry()
258 rb_erase(&ref->node, &be->refs); in free_block_entry()
262 while (!list_empty(&be->actions)) { in free_block_entry()
263 ra = list_first_entry(&be->actions, struct ref_action, in free_block_entry()
268 kfree(be); in free_block_entry()
275 struct block_entry *be = NULL, *exist; in add_block_entry() local
279 be = kzalloc(sizeof(struct block_entry), GFP_KERNEL); in add_block_entry()
280 if (!be || !re) { in add_block_entry()
282 kfree(be); in add_block_entry()
285 be->bytenr = bytenr; in add_block_entry()
286 be->len = len; in add_block_entry()
292 exist = insert_block_entry(&fs_info->block_tree, be); in add_block_entry()
301 kfree(be); in add_block_entry()
305 be->num_refs = 0; in add_block_entry()
306 be->metadata = 0; in add_block_entry()
307 be->from_disk = 0; in add_block_entry()
308 be->roots = RB_ROOT; in add_block_entry()
309 be->refs = RB_ROOT; in add_block_entry()
310 INIT_LIST_HEAD(&be->actions); in add_block_entry()
312 insert_root_entry(&be->roots, re); in add_block_entry()
315 return be; in add_block_entry()
321 struct block_entry *be; in add_tree_block() local
338 be = add_block_entry(fs_info, bytenr, fs_info->nodesize, ref_root); in add_tree_block()
339 if (IS_ERR(be)) { in add_tree_block()
341 return PTR_ERR(be); in add_tree_block()
343 be->num_refs++; in add_tree_block()
344 be->from_disk = 1; in add_tree_block()
345 be->metadata = 1; in add_tree_block()
349 re = lookup_root_entry(&be->roots, ref_root); in add_tree_block()
353 exist = insert_ref_entry(&be->refs, ref); in add_tree_block()
367 struct block_entry *be; in add_shared_data_ref() local
373 be = add_block_entry(fs_info, bytenr, num_bytes, 0); in add_shared_data_ref()
374 if (IS_ERR(be)) { in add_shared_data_ref()
376 return PTR_ERR(be); in add_shared_data_ref()
378 be->num_refs += num_refs; in add_shared_data_ref()
382 if (insert_ref_entry(&be->refs, ref)) { in add_shared_data_ref()
397 struct block_entry *be; in add_extent_data_ref() local
408 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in add_extent_data_ref()
409 if (IS_ERR(be)) { in add_extent_data_ref()
411 return PTR_ERR(be); in add_extent_data_ref()
413 be->num_refs += num_refs; in add_extent_data_ref()
420 if (insert_ref_entry(&be->refs, ref)) { in add_extent_data_ref()
427 re = lookup_root_entry(&be->roots, ref_root); in add_extent_data_ref()
641 struct block_entry *be) in dump_block_entry() argument
650 be->bytenr, be->len, be->num_refs, be->metadata, in dump_block_entry()
651 be->from_disk); in dump_block_entry()
653 for (n = rb_first(&be->refs); n; n = rb_next(n)) { in dump_block_entry()
661 for (n = rb_first(&be->roots); n; n = rb_next(n)) { in dump_block_entry()
667 list_for_each_entry(ra, &be->actions, list) in dump_block_entry()
695 struct block_entry *be = NULL; in btrfs_ref_tree_mod() local
748 be = add_block_entry(root->fs_info, bytenr, num_bytes, ref_root); in btrfs_ref_tree_mod()
749 if (IS_ERR(be)) { in btrfs_ref_tree_mod()
751 ret = PTR_ERR(be); in btrfs_ref_tree_mod()
754 be->num_refs++; in btrfs_ref_tree_mod()
756 be->metadata = 1; in btrfs_ref_tree_mod()
758 if (be->num_refs != 1) { in btrfs_ref_tree_mod()
761 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
766 while (!list_empty(&be->actions)) { in btrfs_ref_tree_mod()
769 tmp = list_first_entry(&be->actions, struct ref_action, in btrfs_ref_tree_mod()
796 be = lookup_block_entry(&root->fs_info->block_tree, bytenr); in btrfs_ref_tree_mod()
797 if (!be) { in btrfs_ref_tree_mod()
809 tmp = insert_root_entry(&be->roots, re); in btrfs_ref_tree_mod()
817 exist = insert_ref_entry(&be->refs, ref); in btrfs_ref_tree_mod()
823 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
830 rb_erase(&exist->node, &be->refs); in btrfs_ref_tree_mod()
833 } else if (!be->metadata) { in btrfs_ref_tree_mod()
838 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
848 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
856 re = lookup_root_entry(&be->roots, ref_root); in btrfs_ref_tree_mod()
865 root->objectid, be->bytenr); in btrfs_ref_tree_mod()
866 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
875 be->num_refs--; in btrfs_ref_tree_mod()
877 be->num_refs++; in btrfs_ref_tree_mod()
881 list_add_tail(&ra->list, &be->actions); in btrfs_ref_tree_mod()
894 struct block_entry *be; in btrfs_free_ref_cache() local
902 be = rb_entry(n, struct block_entry, node); in btrfs_free_ref_cache()
903 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_cache()
904 free_block_entry(be); in btrfs_free_ref_cache()
913 struct block_entry *be = NULL, *entry; in btrfs_free_ref_tree_range() local
928 be = entry; in btrfs_free_ref_tree_range()
932 if (be == NULL || in btrfs_free_ref_tree_range()
933 (entry->bytenr < start && be->bytenr > start) || in btrfs_free_ref_tree_range()
934 (entry->bytenr < start && entry->bytenr > be->bytenr)) in btrfs_free_ref_tree_range()
935 be = entry; in btrfs_free_ref_tree_range()
942 if (!be) { in btrfs_free_ref_tree_range()
947 n = &be->node; in btrfs_free_ref_tree_range()
949 be = rb_entry(n, struct block_entry, node); in btrfs_free_ref_tree_range()
951 if (be->bytenr < start && be->bytenr + be->len > start) { in btrfs_free_ref_tree_range()
955 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
958 if (be->bytenr < start) in btrfs_free_ref_tree_range()
960 if (be->bytenr >= start + len) in btrfs_free_ref_tree_range()
962 if (be->bytenr + be->len > start + len) { in btrfs_free_ref_tree_range()
966 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
968 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_tree_range()
969 free_block_entry(be); in btrfs_free_ref_tree_range()