From: Josef Bacik Date: Fri, 31 Oct 2014 18:01:21 +0000 (-0400) Subject: Btrfs-progs: allow fsck to take the tree bytenr X-Git-Tag: upstream/4.16.1~2554 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3a98fe43f67e4f751b04fc9270152f6825fe47dd;p=platform%2Fupstream%2Fbtrfs-progs.git Btrfs-progs: allow fsck to take the tree bytenr 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 Tested-by: Ansgar Hockmann-Stolle Signed-off-by: David Sterba --- diff --git a/cmds-check.c b/cmds-check.c index d427405..d57363c 100644 --- a/cmds-check.c +++ b/cmds-check.c @@ -7677,6 +7677,7 @@ static struct option long_options[] = { { "backup", 0, NULL, 0 }, { "subvol-extents", 1, NULL, 'E' }, { "qgroup-report", 0, NULL, 'Q' }, + { "tree-root", 1, NULL, 'r' }, { NULL, 0, NULL, 0} }; @@ -7692,6 +7693,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 }; @@ -7702,6 +7704,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; @@ -7712,7 +7715,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; @@ -7739,6 +7742,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); @@ -7782,7 +7788,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;