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 inline void __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()
501 struct btrfs_fs_info *fs_info = root->fs_info; in process_leaf() local
518 ret = process_extent_item(fs_info, path, &key, i, in process_leaf()
522 ret = add_tree_block(fs_info, key.offset, 0, in process_leaf()
526 ret = add_tree_block(fs_info, 0, key.offset, in process_leaf()
532 ret = add_extent_data_ref(fs_info, leaf, dref, *bytenr, in process_leaf()
539 ret = add_shared_data_ref(fs_info, key.offset, count, in process_leaf()
606 static void dump_ref_action(struct btrfs_fs_info *fs_info, in dump_ref_action() argument
609 btrfs_err(fs_info, in dump_ref_action()
613 __print_stack_trace(fs_info, ra); in dump_ref_action()
620 static void dump_block_entry(struct btrfs_fs_info *fs_info, in dump_block_entry() argument
628 btrfs_err(fs_info, in dump_block_entry()
635 btrfs_err(fs_info, in dump_block_entry()
643 btrfs_err(fs_info, " root entry %llu, num_refs %llu", in dump_block_entry()
648 dump_ref_action(fs_info, ra); in dump_block_entry()
659 int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info, in btrfs_ref_tree_mod() argument
676 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_ref_tree_mod()
732 be = add_block_entry(fs_info, bytenr, num_bytes, ref_root); in btrfs_ref_tree_mod()
744 btrfs_err(fs_info, in btrfs_ref_tree_mod()
746 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
747 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
782 spin_lock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
783 be = lookup_block_entry(&fs_info->block_tree, bytenr); in btrfs_ref_tree_mod()
785 btrfs_err(fs_info, in btrfs_ref_tree_mod()
788 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
793 btrfs_err(fs_info, in btrfs_ref_tree_mod()
796 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
797 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
816 btrfs_err(fs_info, in btrfs_ref_tree_mod()
818 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
819 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()
843 btrfs_err(fs_info, in btrfs_ref_tree_mod()
845 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
846 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
862 btrfs_err(fs_info, "failed to find root %llu for %llu", in btrfs_ref_tree_mod()
864 dump_block_entry(fs_info, be); in btrfs_ref_tree_mod()
865 dump_ref_action(fs_info, ra); in btrfs_ref_tree_mod()
882 spin_unlock(&fs_info->ref_verify_lock); in btrfs_ref_tree_mod()
885 btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); in btrfs_ref_tree_mod()
890 void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info) in btrfs_free_ref_cache() argument
895 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_free_ref_cache()
898 spin_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
899 while ((n = rb_first(&fs_info->block_tree))) { in btrfs_free_ref_cache()
901 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_cache()
903 cond_resched_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
905 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_cache()
908 void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info, u64 start, in btrfs_free_ref_tree_range() argument
914 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_free_ref_tree_range()
917 spin_lock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
918 n = fs_info->block_tree.rb_node; in btrfs_free_ref_tree_range()
941 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
950 btrfs_err(fs_info, in btrfs_free_ref_tree_range()
953 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
961 btrfs_err(fs_info, in btrfs_free_ref_tree_range()
964 dump_block_entry(fs_info, be); in btrfs_free_ref_tree_range()
966 rb_erase(&be->node, &fs_info->block_tree); in btrfs_free_ref_tree_range()
969 spin_unlock(&fs_info->ref_verify_lock); in btrfs_free_ref_tree_range()
973 int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info) in btrfs_build_ref_tree() argument
981 if (!btrfs_test_opt(fs_info, REF_VERIFY)) in btrfs_build_ref_tree()
988 eb = btrfs_read_lock_root_node(fs_info->extent_root); in btrfs_build_ref_tree()
1001 ret = walk_down_tree(fs_info->extent_root, path, level, in btrfs_build_ref_tree()
1014 btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); in btrfs_build_ref_tree()
1015 btrfs_free_ref_cache(fs_info); in btrfs_build_ref_tree()