X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=btrfs-find-root.c;h=e2d2e70c408c94ce4b4e5f6eaf3e94584b803e2d;hb=22d39a9e0f048b9241b0fc22e6ef2151da07cfb4;hp=01b36036ab8ca2fca3cef30eb7ac38e495274605;hpb=3eb8836424fd363fd7b4dda5cc602ed0040c3f8a;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/btrfs-find-root.c b/btrfs-find-root.c index 01b3603..e2d2e70 100644 --- a/btrfs-find-root.c +++ b/btrfs-find-root.c @@ -35,8 +35,9 @@ #include "crc32c.h" #include "extent-cache.h" #include "find-root.h" +#include "help.h" -static void usage(void) +static void find_root_usage(void) { fprintf(stderr, "Usage: find-roots [-a] [-o search_objectid] " "[ -g search_generation ] [ -l search_level ] \n"); @@ -69,7 +70,6 @@ static void get_root_gen_and_level(u64 objectid, struct btrfs_fs_info *fs_info, case BTRFS_CHUNK_TREE_OBJECTID: level = btrfs_super_chunk_root_level(super); gen = btrfs_super_chunk_root_generation(super); - printf("Search for chunk root is not supported yet\n"); break; case BTRFS_TREE_LOG_OBJECTID: level = btrfs_super_log_root_level(super); @@ -145,7 +145,7 @@ static void print_find_root_result(struct cache_tree *result, int main(int argc, char **argv) { - struct btrfs_root *root; + struct btrfs_fs_info *fs_info; struct btrfs_find_root_filter filter = {0}; struct cache_tree result; struct cache_extent *found; @@ -180,28 +180,29 @@ int main(int argc, char **argv) break; case GETOPT_VAL_HELP: default: - usage(); + find_root_usage(); exit(c != GETOPT_VAL_HELP); } } set_argv0(argv); - argc = argc - optind; - if (check_argc_min(argc, 1)) { - usage(); + if (check_argc_min(argc - optind, 1)) { + find_root_usage(); exit(1); } - root = open_ctree(argv[optind], 0, OPEN_CTREE_CHUNK_ROOT_ONLY); - if (!root) { - fprintf(stderr, "Open ctree failed\n"); + fs_info = open_ctree_fs_info(argv[optind], 0, 0, 0, + OPEN_CTREE_CHUNK_ROOT_ONLY | + OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR); + if (!fs_info) { + error("open ctree failed"); exit(1); } cache_tree_init(&result); - get_root_gen_and_level(filter.objectid, root->fs_info, + get_root_gen_and_level(filter.objectid, fs_info, &filter.match_gen, &filter.match_level); - ret = btrfs_find_root_search(root, &filter, &result, &found); + ret = btrfs_find_root_search(fs_info, &filter, &result, &found); if (ret < 0) { fprintf(stderr, "Fail to search the tree root: %s\n", strerror(-ret)); @@ -215,6 +216,7 @@ int main(int argc, char **argv) print_find_root_result(&result, &filter); out: btrfs_find_root_free(&result); - close_ctree(root); + close_ctree_fs_info(fs_info); + btrfs_close_all_devices(); return ret; }