diff --git a/Documentation/btrfs-inspect-internal.asciidoc b/Documentation/btrfs-inspect-internal.asciidoc index e072a943..e2db6466 100644 --- a/Documentation/btrfs-inspect-internal.asciidoc +++ b/Documentation/btrfs-inspect-internal.asciidoc @@ -87,6 +87,8 @@ the respective tree root block offset print only the uuid tree information, empty output if the tree does not exist -b :::: print info of the specified block only +--follow:::: +use with '-b', print all children tree blocks of '' -t :::: print only the tree with the specified ID, where the ID can be numerical or common name in a flexible human readable form diff --git a/cmds-inspect-dump-tree.c b/cmds-inspect-dump-tree.c index df44bb63..0802b31e 100644 --- a/cmds-inspect-dump-tree.c +++ b/cmds-inspect-dump-tree.c @@ -198,6 +198,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 +224,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 +237,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 +290,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 +331,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(root, leaf, follow); free_extent_buffer(leaf); goto close_root; }