Lines Matching refs:fs_info

211 static void __print_stack_trace(struct btrfs_fs_info *fs_info,  in __print_stack_trace()  argument
215 btrfs_err(fs_info, " ref-verify: no stacktrace"); in __print_stack_trace()
225 static void inline __print_stack_trace(struct btrfs_fs_info *fs_info, in __print_stack_trace() argument
228 btrfs_err(fs_info, " ref-verify: no stacktrace support"); in __print_stack_trace()
260 static struct block_entry *add_block_entry(struct btrfs_fs_info *fs_info, in add_block_entry() argument
280 spin_lock(&fs_info->ref_verify_lock); in add_block_entry()
281 exist = insert_block_entry(&fs_info->block_tree, be); in add_block_entry()
309 static int add_tree_block(struct btrfs_fs_info *fs_info, u64 ref_root, in add_tree_block() argument
329 be = add_block_entry(fs_info, bytenr, fs_info->nodesize, ref_root); in add_tree_block()
349 spin_unlock(&fs_info->ref_verify_lock); in add_tree_block()
354 static int add_shared_data_ref(struct btrfs_fs_info *fs_info, in add_shared_data_ref() argument
364 be = add_block_entry(fs_info, bytenr, num_bytes, 0); in add_shared_data_ref()
374 spin_unlock(&fs_info->ref_verify_lock); in add_shared_data_ref()
375 btrfs_err(fs_info, "existing shared ref when reading from disk?"); in add_shared_data_ref()
379 spin_unlock(&fs_info->ref_verify_lock); in add_shared_data_ref()
383 static int add_extent_data_ref(struct btrfs_fs_info *fs_info, in add_extent_data_ref() argument
399 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in add_extent_data_ref()
412 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
413 btrfs_err(fs_info, "existing ref when reading from disk?"); in add_extent_data_ref()
420 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
421 btrfs_err(fs_info, "missing root in new block entry?"); in add_extent_data_ref()
425 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
429 static int process_extent_item(struct btrfs_fs_info *fs_info, in process_extent_item() argument
467 ret = add_tree_block(fs_info, offset, 0, key->objectid, in process_extent_item()
471 ret = add_tree_block(fs_info, 0, offset, key->objectid, in process_extent_item()
476 ret = add_extent_data_ref(fs_info, leaf, dref, in process_extent_item()
482 ret = add_shared_data_ref(fs_info, offset, count, in process_extent_item()
486 btrfs_err(fs_info, "invalid key type in iref"); in process_extent_item()
500 struct btrfs_fs_info *fs_info = root->fs_info; in process_leaf() local
517 ret = process_extent_item(fs_info, path, &key, i, in process_leaf()
521 ret = add_tree_block(fs_info, key.offset, 0, in process_leaf()
525 ret = add_tree_block(fs_info, 0, key.offset, in process_leaf()
531 ret = add_extent_data_ref(fs_info, leaf, dref, *bytenr, in process_leaf()
538 ret = add_shared_data_ref(fs_info, key.offset, count, in process_leaf()
554 struct btrfs_fs_info *fs_info = root->fs_info; in walk_down_tree() local
569 eb = read_tree_block(fs_info, block_bytenr, gen, in walk_down_tree()
618 static void dump_ref_action(struct btrfs_fs_info *fs_info, in dump_ref_action() argument
621 btrfs_err(fs_info, in dump_ref_action()
625 __print_stack_trace(fs_info, ra); in dump_ref_action()
632 static void dump_block_entry(struct btrfs_fs_info *fs_info, in dump_block_entry() argument
640 btrfs_err(fs_info, in dump_block_entry()
647 btrfs_err(fs_info, in dump_block_entry()
655 btrfs_err(fs_info, " root entry %llu, num_refs %llu", in dump_block_entry()
660 dump_ref_action(fs_info, ra); in dump_block_entry()
671 int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info, in btrfs_ref_tree_mod() argument
688 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_ref_tree_mod()
747 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in btrfs_ref_tree_mod()
759 btrfs_err(fs_info, in btrfs_ref_tree_mod()
761 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
762 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
797 spin_lock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
798 be = lookup_block_entry(&fs_info->block_tree, bytenr); in btrfs_ref_tree_mod()
800 btrfs_err(fs_info, in btrfs_ref_tree_mod()
804 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
809 btrfs_err(fs_info, in btrfs_ref_tree_mod()
812 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
813 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
832 btrfs_err(fs_info, in btrfs_ref_tree_mod()
834 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
835 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
848 btrfs_err(fs_info, in btrfs_ref_tree_mod()
850 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
851 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
859 btrfs_err(fs_info, in btrfs_ref_tree_mod()
861 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
862 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
878 btrfs_err(fs_info, "failed to find root %llu for %llu", in btrfs_ref_tree_mod()
880 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
881 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
898 spin_unlock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
901 btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); in btrfs_ref_tree_mod()
906 void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info) in btrfs_free_ref_cache() argument
911 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_free_ref_cache()
914 spin_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
915 while ((n = rb_first(&fs_info->block_tree))) { in btrfs_free_ref_cache()
917 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_cache()
919 cond_resched_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
921 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
924 void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info, u64 start, in btrfs_free_ref_tree_range() argument
930 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_free_ref_tree_range()
933 spin_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
934 n = fs_info->block_tree.rb_node; in btrfs_free_ref_tree_range()
957 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
966 btrfs_err(fs_info, in btrfs_free_ref_tree_range()
969 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
977 btrfs_err(fs_info, in btrfs_free_ref_tree_range()
980 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
982 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_tree_range()
985 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
989 int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info) in btrfs_build_ref_tree() argument
996 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_build_ref_tree()
1003 eb = btrfs_read_lock_root_node(fs_info->extent_root); in btrfs_build_ref_tree()
1017 ret = walk_down_tree(fs_info->extent_root, path, level, in btrfs_build_ref_tree()
1030 btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); in btrfs_build_ref_tree()
1031 btrfs_free_ref_cache(fs_info); in btrfs_build_ref_tree()