projects
/
platform
/
upstream
/
btrfs-progs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
btrfs-progs: configure: check if xmlto exists at configure time
[platform/upstream/btrfs-progs.git]
/
cmds-inspect-dump-tree.c
diff --git
a/cmds-inspect-dump-tree.c
b/cmds-inspect-dump-tree.c
index
df44bb6
..
b0cd49b
100644
(file)
--- a/
cmds-inspect-dump-tree.c
+++ b/
cmds-inspect-dump-tree.c
@@
-33,8
+33,9
@@
#include "utils.h"
#include "help.h"
#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;
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)) {
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++) {
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))
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;
}
btrfs_header_level(eb));
goto out;
}
- print_extents(
root,
next);
+ print_extents(next);
free_extent_buffer(next);
}
free_extent_buffer(next);
}
@@
-198,6
+199,7
@@
const char * const cmd_inspect_dump_tree_usage[] = {
"-u|--uuid print only the uuid tree",
"-b|--block <block_num> print info from the specified block only",
"-t|--tree <tree_id> print only tree with the given id (string or number)",
"-u|--uuid print only the uuid tree",
"-b|--block <block_num> print info from the specified block only",
"-t|--tree <tree_id> print only tree with the given id (string or number)",
+ "--follow use with -b, to show all children tree blocks of <block_num>",
NULL
};
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;
u64 block_only = 0;
struct btrfs_root *tree_root_scan;
u64 tree_id = 0;
+ bool follow = false;
while (1) {
int c;
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'},
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'},
{ "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 }
};
{ NULL, 0, NULL, 0 }
};
@@
-286,6
+291,9
@@
int cmd_inspect_dump_tree(int argc, char **argv)
}
break;
}
}
break;
}
+ case GETOPT_VAL_FOLLOW:
+ follow = true;
+ break;
default:
usage(cmd_inspect_dump_tree_usage);
}
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;
}
(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;
}
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");
} 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");
}
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");
}
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");
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;
}
goto close_root;
}
@@
-394,7
+399,7
@@
again:
goto close_root;
}
printf("chunk tree\n");
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;
}
goto close_root;
}
@@
-404,8
+409,7
@@
again:
goto close_root;
}
printf("log root tree\n");
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;
}
goto close_root;
}
@@
-541,7
+545,7
@@
again:
printf(" tree ");
btrfs_print_key(&disk_key);
printf("\n");
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);
} else if (!skip) {
printf(" tree ");
btrfs_print_key(&disk_key);
@@
-551,7
+555,7
@@
again:
btrfs_header_level(buf));
} else {
printf(" \n");
btrfs_header_level(buf));
} else {
printf(" \n");
- btrfs_print_tree(
tree_root_scan,
buf, 1);
+ btrfs_print_tree(buf, 1);
}
}
free_extent_buffer(buf);
}
}
free_extent_buffer(buf);