Lines Matching refs:fs_info

214 static void __print_stack_trace(struct btrfs_fs_info *fs_info,  in __print_stack_trace()  argument
218 btrfs_err(fs_info, " ref-verify: no stacktrace"); in __print_stack_trace()
228 static inline void __print_stack_trace(struct btrfs_fs_info *fs_info, in __print_stack_trace() argument
231 btrfs_err(fs_info, " ref-verify: no stacktrace support"); in __print_stack_trace()
263 static struct block_entry *add_block_entry(struct btrfs_fs_info *fs_info, in add_block_entry() argument
283 spin_lock(&fs_info->ref_verify_lock); in add_block_entry()
284 exist = insert_block_entry(&fs_info->block_tree, be); in add_block_entry()
312 static int add_tree_block(struct btrfs_fs_info *fs_info, u64 ref_root, in add_tree_block() argument
332 be = add_block_entry(fs_info, bytenr, fs_info->nodesize, ref_root); in add_tree_block()
352 spin_unlock(&fs_info->ref_verify_lock); in add_tree_block()
357 static int add_shared_data_ref(struct btrfs_fs_info *fs_info, in add_shared_data_ref() argument
367 be = add_block_entry(fs_info, bytenr, num_bytes, 0); in add_shared_data_ref()
377 spin_unlock(&fs_info->ref_verify_lock); in add_shared_data_ref()
378 btrfs_err(fs_info, "existing shared ref when reading from disk?"); in add_shared_data_ref()
382 spin_unlock(&fs_info->ref_verify_lock); in add_shared_data_ref()
386 static int add_extent_data_ref(struct btrfs_fs_info *fs_info, in add_extent_data_ref() argument
402 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in add_extent_data_ref()
415 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
416 btrfs_err(fs_info, "existing ref when reading from disk?"); in add_extent_data_ref()
423 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
424 btrfs_err(fs_info, "missing root in new block entry?"); in add_extent_data_ref()
428 spin_unlock(&fs_info->ref_verify_lock); in add_extent_data_ref()
432 static int process_extent_item(struct btrfs_fs_info *fs_info, in process_extent_item() argument
471 ret = add_tree_block(fs_info, offset, 0, key->objectid, in process_extent_item()
475 ret = add_tree_block(fs_info, 0, offset, key->objectid, in process_extent_item()
480 ret = add_extent_data_ref(fs_info, leaf, dref, in process_extent_item()
486 ret = add_shared_data_ref(fs_info, offset, count, in process_extent_item()
490 if (!btrfs_fs_incompat(fs_info, SIMPLE_QUOTA)) { in process_extent_item()
491 btrfs_err(fs_info, in process_extent_item()
497 btrfs_err(fs_info, "invalid key type in iref"); in process_extent_item()
512 struct btrfs_fs_info *fs_info = root->fs_info; in process_leaf() local
529 ret = process_extent_item(fs_info, path, &key, i, in process_leaf()
533 ret = add_tree_block(fs_info, key.offset, 0, in process_leaf()
537 ret = add_tree_block(fs_info, 0, key.offset, in process_leaf()
543 ret = add_extent_data_ref(fs_info, leaf, dref, *bytenr, in process_leaf()
550 ret = add_shared_data_ref(fs_info, key.offset, count, in process_leaf()
617 static void dump_ref_action(struct btrfs_fs_info *fs_info, in dump_ref_action() argument
620 btrfs_err(fs_info, in dump_ref_action()
624 __print_stack_trace(fs_info, ra); in dump_ref_action()
631 static void dump_block_entry(struct btrfs_fs_info *fs_info, in dump_block_entry() argument
639 btrfs_err(fs_info, in dump_block_entry()
646 btrfs_err(fs_info, in dump_block_entry()
654 btrfs_err(fs_info, " root entry %llu, num_refs %llu", in dump_block_entry()
659 dump_ref_action(fs_info, ra); in dump_block_entry()
670 int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info, in btrfs_ref_tree_mod() argument
687 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_ref_tree_mod()
743 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in btrfs_ref_tree_mod()
755 btrfs_err(fs_info, in btrfs_ref_tree_mod()
757 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
758 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
793 spin_lock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
794 be = lookup_block_entry(&fs_info->block_tree, bytenr); in btrfs_ref_tree_mod()
796 btrfs_err(fs_info, in btrfs_ref_tree_mod()
799 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
805 btrfs_err(fs_info, in btrfs_ref_tree_mod()
808 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
809 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
829 btrfs_err(fs_info, in btrfs_ref_tree_mod()
831 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
832 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
845 btrfs_err(fs_info, in btrfs_ref_tree_mod()
847 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
848 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
856 btrfs_err(fs_info, in btrfs_ref_tree_mod()
858 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
859 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
876 btrfs_err(fs_info, "failed to find root %llu for %llu", in btrfs_ref_tree_mod()
878 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
879 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
896 spin_unlock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
899 btrfs_free_ref_cache(fs_info); in btrfs_ref_tree_mod()
900 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
998 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_build_ref_tree()
1005 extent_root = btrfs_extent_root(fs_info, 0); in btrfs_build_ref_tree()
1032 btrfs_free_ref_cache(fs_info); in btrfs_build_ref_tree()
1033 btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); in btrfs_build_ref_tree()