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: mkfs/rootdir: Fix inline extent creation check
[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
876ddcb
..
0802b31
100644
(file)
--- a/
cmds-inspect-dump-tree.c
+++ b/
cmds-inspect-dump-tree.c
@@
-31,7
+31,6
@@
#include "volumes.h"
#include "commands.h"
#include "utils.h"
#include "volumes.h"
#include "commands.h"
#include "utils.h"
-#include "cmds-inspect-dump-tree.h"
#include "help.h"
static void print_extents(struct btrfs_root *root, struct extent_buffer *eb)
#include "help.h"
static void print_extents(struct btrfs_root *root, struct extent_buffer *eb)
@@
-39,7
+38,6
@@
static void print_extents(struct btrfs_root *root, struct extent_buffer *eb)
struct extent_buffer *next;
int i;
u32 nr;
struct extent_buffer *next;
int i;
u32 nr;
- u32 size;
if (!eb)
return;
if (!eb)
return;
@@
-49,12
+47,11
@@
static void print_extents(struct btrfs_root *root, struct extent_buffer *eb)
return;
}
return;
}
- size = root->fs_info->nodesize;
nr = btrfs_header_nritems(eb);
for (i = 0; i < nr; i++) {
next = read_tree_block(root->fs_info,
btrfs_node_blockptr(eb, i),
nr = btrfs_header_nritems(eb);
for (i = 0; i < nr; i++) {
next = read_tree_block(root->fs_info,
btrfs_node_blockptr(eb, i),
-
size,
btrfs_node_ptr_generation(eb, i));
+ btrfs_node_ptr_generation(eb, i));
if (!extent_buffer_uptodate(next))
continue;
if (btrfs_is_leaf(next) && btrfs_header_level(eb) != 1) {
if (!extent_buffer_uptodate(next))
continue;
if (btrfs_is_leaf(next) && btrfs_header_level(eb) != 1) {
@@
-146,7
+143,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 },
{ "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 },
{ "CSUM", BTRFS_CSUM_TREE_OBJECTID },
{ "CHECKSUM", BTRFS_CSUM_TREE_OBJECTID },
{ "QUOTA", BTRFS_QUOTA_TREE_OBJECTID },
@@
-201,6
+198,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
};
@@
-226,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;
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'},
@@
-237,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'},
{ "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 }
};
@@
-289,6
+290,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);
}
@@
-313,27
+317,21
@@
int cmd_inspect_dump_tree(int argc, char **argv)
if (block_only) {
root = info->chunk_root;
if (block_only) {
root = info->chunk_root;
- leaf = read_tree_block(info,
- block_only,
- info->nodesize, 0);
-
+ leaf = read_tree_block(info, block_only, 0);
if (extent_buffer_uptodate(leaf) &&
btrfs_header_level(leaf) != 0) {
free_extent_buffer(leaf);
leaf = NULL;
}
if (extent_buffer_uptodate(leaf) &&
btrfs_header_level(leaf) != 0) {
free_extent_buffer(leaf);
leaf = NULL;
}
- if (!leaf) {
- leaf = read_tree_block(info,
- block_only,
- info->nodesize, 0);
- }
+ if (!leaf)
+ leaf = read_tree_block(info, block_only, 0);
if (!extent_buffer_uptodate(leaf)) {
error("failed to read %llu",
(unsigned long long)block_only);
goto close_root;
}
if (!extent_buffer_uptodate(leaf)) {
error("failed to read %llu",
(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;
}
free_extent_buffer(leaf);
goto close_root;
}
@@
-447,8
+445,7
@@
again:
offset = btrfs_item_ptr_offset(leaf, slot);
read_extent_buffer(leaf, &ri, offset, sizeof(ri));
offset = btrfs_item_ptr_offset(leaf, slot);
read_extent_buffer(leaf, &ri, offset, sizeof(ri));
- buf = read_tree_block(info, btrfs_root_bytenr(&ri),
- info->nodesize, 0);
+ buf = read_tree_block(info, btrfs_root_bytenr(&ri), 0);
if (!extent_buffer_uptodate(buf))
goto next;
if (tree_id && found_key.objectid != tree_id) {
if (!extent_buffer_uptodate(buf))
goto next;
if (tree_id && found_key.objectid != tree_id) {