@@ -7546,6 +7546,7 @@ static struct option long_options[] = {
{ "backup", 0, NULL, 0 },
{ "subvol-extents", no_argument, NULL, 'E' },
{ "qgroup-report", 0, NULL, 'Q' },
+ { "tree-root", 1, NULL, 'r' },
{ NULL, 0, NULL, 0}
};
@@ -7561,6 +7562,7 @@ const char * const cmd_check_usage[] = {
"--check-data-csum verify checkums of data blocks",
"--qgroup-report print a report on qgroup consistency",
"--subvol-extents print subvolume extents and sharing state",
+ "--tree-root use the given bytenr for the tree root",
NULL
};
@@ -7571,6 +7573,7 @@ int cmd_check(int argc, char **argv)
struct btrfs_fs_info *info;
u64 bytenr = 0;
u64 subvolid = 0;
+ u64 tree_root_bytenr = 0;
char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
int ret;
u64 num;
@@ -7581,7 +7584,7 @@ int cmd_check(int argc, char **argv)
while(1) {
int c;
- c = getopt_long(argc, argv, "as:b", long_options,
+ c = getopt_long(argc, argv, "as:br:", long_options,
&option_index);
if (c < 0)
break;
@@ -7608,6 +7611,9 @@ int cmd_check(int argc, char **argv)
case 'E':
subvolid = arg_strtou64(optarg);
break;
+ case 'r':
+ tree_root_bytenr = arg_strtou64(optarg);
+ break;
case '?':
case 'h':
usage(cmd_check_usage);
@@ -7651,7 +7657,8 @@ int cmd_check(int argc, char **argv)
if (repair)
ctree_flags |= OPEN_CTREE_PARTIAL;
- info = open_ctree_fs_info(argv[optind], bytenr, 0, ctree_flags);
+ info = open_ctree_fs_info(argv[optind], bytenr, tree_root_bytenr,
+ ctree_flags);
if (!info) {
fprintf(stderr, "Couldn't open file system\n");
ret = -EIO;
Sometimes we have a pretty corrupted fs but have an old tree bytenr that we could use, add the ability to specify the tree root bytenr. Thanks, Signed-off-by: Josef Bacik <jbacik@fb.com> --- cmds-check.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)