X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cmds-inspect-dump-tree.c;h=b0cd49b32664ea686c2210c056d391a38aefc6c1;hb=26c1dafbf60182610744bba427583c0fdd8d0327;hp=4e72c08a1b987b8ec4692b2ae0bddc3a9ec29332;hpb=98909c21d7725f622991e6fc7634544878fe5ab9;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/cmds-inspect-dump-tree.c b/cmds-inspect-dump-tree.c index 4e72c08..b0cd49b 100644 --- a/cmds-inspect-dump-tree.c +++ b/cmds-inspect-dump-tree.c @@ -33,8 +33,9 @@ #include "utils.h" #include "help.h" -static void print_extents(struct btrfs_root *root, struct extent_buffer *eb) +static void print_extents(struct extent_buffer *eb) { + struct btrfs_fs_info *fs_info = eb->fs_info; struct extent_buffer *next; int i; u32 nr; @@ -43,13 +44,13 @@ static void print_extents(struct btrfs_root *root, struct extent_buffer *eb) return; if (btrfs_is_leaf(eb)) { - btrfs_print_leaf(root, eb); + btrfs_print_leaf(eb); return; } nr = btrfs_header_nritems(eb); for (i = 0; i < nr; i++) { - next = read_tree_block(root->fs_info, + next = read_tree_block(fs_info, btrfs_node_blockptr(eb, i), btrfs_node_ptr_generation(eb, i)); if (!extent_buffer_uptodate(next)) @@ -68,7 +69,7 @@ static void print_extents(struct btrfs_root *root, struct extent_buffer *eb) btrfs_header_level(eb)); goto out; } - print_extents(root, next); + print_extents(next); free_extent_buffer(next); } @@ -143,7 +144,7 @@ static u64 treeid_from_string(const char *str, const char **end) { "CHUNK", BTRFS_CHUNK_TREE_OBJECTID }, { "DEVICE", BTRFS_DEV_TREE_OBJECTID }, { "DEV", BTRFS_DEV_TREE_OBJECTID }, - { "FS_TREE", BTRFS_FS_TREE_OBJECTID }, + { "FS", BTRFS_FS_TREE_OBJECTID }, { "CSUM", BTRFS_CSUM_TREE_OBJECTID }, { "CHECKSUM", BTRFS_CSUM_TREE_OBJECTID }, { "QUOTA", BTRFS_QUOTA_TREE_OBJECTID }, @@ -198,6 +199,7 @@ const char * const cmd_inspect_dump_tree_usage[] = { "-u|--uuid print only the uuid tree", "-b|--block print info from the specified block only", "-t|--tree print only tree with the given id (string or number)", + "--follow use with -b, to show all children tree blocks of ", NULL }; @@ -223,9 +225,11 @@ int cmd_inspect_dump_tree(int argc, char **argv) u64 block_only = 0; struct btrfs_root *tree_root_scan; u64 tree_id = 0; + bool follow = false; while (1) { int c; + enum { GETOPT_VAL_FOLLOW = 256 }; static const struct option long_options[] = { { "extents", no_argument, NULL, 'e'}, { "device", no_argument, NULL, 'd'}, @@ -234,6 +238,7 @@ int cmd_inspect_dump_tree(int argc, char **argv) { "uuid", no_argument, NULL, 'u'}, { "block", required_argument, NULL, 'b'}, { "tree", required_argument, NULL, 't'}, + { "follow", no_argument, NULL, GETOPT_VAL_FOLLOW }, { NULL, 0, NULL, 0 } }; @@ -286,6 +291,9 @@ int cmd_inspect_dump_tree(int argc, char **argv) } break; } + case GETOPT_VAL_FOLLOW: + follow = true; + break; default: usage(cmd_inspect_dump_tree_usage); } @@ -324,7 +332,7 @@ int cmd_inspect_dump_tree(int argc, char **argv) (unsigned long long)block_only); goto close_root; } - btrfs_print_tree(root, leaf, 0); + btrfs_print_tree(leaf, follow); free_extent_buffer(leaf); goto close_root; } @@ -351,20 +359,17 @@ int cmd_inspect_dump_tree(int argc, char **argv) } else { if (info->tree_root->node) { printf("root tree\n"); - btrfs_print_tree(info->tree_root, - info->tree_root->node, 1); + btrfs_print_tree(info->tree_root->node, 1); } if (info->chunk_root->node) { printf("chunk tree\n"); - btrfs_print_tree(info->chunk_root, - info->chunk_root->node, 1); + btrfs_print_tree(info->chunk_root->node, 1); } if (info->log_root_tree) { printf("log root tree\n"); - btrfs_print_tree(info->log_root_tree, - info->log_root_tree->node, 1); + btrfs_print_tree(info->log_root_tree->node, 1); } } } @@ -384,7 +389,7 @@ again: goto close_root; } printf("root tree\n"); - btrfs_print_tree(info->tree_root, info->tree_root->node, 1); + btrfs_print_tree(info->tree_root->node, 1); goto close_root; } @@ -394,7 +399,7 @@ again: goto close_root; } printf("chunk tree\n"); - btrfs_print_tree(info->chunk_root, info->chunk_root->node, 1); + btrfs_print_tree(info->chunk_root->node, 1); goto close_root; } @@ -404,8 +409,7 @@ again: goto close_root; } printf("log root tree\n"); - btrfs_print_tree(info->log_root_tree, info->log_root_tree->node, - 1); + btrfs_print_tree(info->log_root_tree->node, 1); goto close_root; } @@ -541,7 +545,7 @@ again: printf(" tree "); btrfs_print_key(&disk_key); printf("\n"); - print_extents(tree_root_scan, buf); + print_extents(buf); } else if (!skip) { printf(" tree "); btrfs_print_key(&disk_key); @@ -551,7 +555,7 @@ again: btrfs_header_level(buf)); } else { printf(" \n"); - btrfs_print_tree(tree_root_scan, buf, 1); + btrfs_print_tree(buf, 1); } } free_extent_buffer(buf);