btrfs-progs: find-root, add option to search through all the metadata extents
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Fri, 16 Jan 2015 11:32:54 +0000 (19:32 +0800)
committerDavid Sterba <dsterba@suse.cz>
Wed, 11 Feb 2015 17:34:06 +0000 (18:34 +0100)
Add option '-a' for btrfs-find-root to iterate all the metadata extents
even the root is already found.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Documentation/btrfs-find-root.txt
btrfs-find-root.c

index c934b4c..e04cd3e 100644 (file)
@@ -16,6 +16,8 @@ root tree's objectid, generation, level.
 
 OPTIONS
 -------
+-a::
+Search through all the metadata extents, even the root is already found.
 -g <generation>::
 Filter root tree by it's original transaction id, tree root's generation in default.
 -o <objectid>::
index b748164..9e56c81 100644 (file)
@@ -36,7 +36,7 @@
 
 static void usage(void)
 {
-       fprintf(stderr, "Usage: find-roots [-o search_objectid] "
+       fprintf(stderr, "Usage: find-roots [-a] [-o search_objectid] "
                "[ -g search_generation ] [ -l search_level ] <device>\n");
 }
 
@@ -149,20 +149,23 @@ int main(int argc, char **argv)
        filter.objectid = BTRFS_ROOT_TREE_OBJECTID;
        filter.match_gen = (u64)-1;
        filter.match_level = (u8)-1;
-       while ((opt = getopt(argc, argv, "l:o:g:")) != -1) {
+       while ((opt = getopt(argc, argv, "al:o:g:")) != -1) {
                switch(opt) {
-                       case 'o':
-                               filter.objectid = arg_strtou64(optarg);
-                               break;
-                       case 'g':
-                               filter.generation = arg_strtou64(optarg);
-                               break;
-                       case 'l':
-                               filter.level = arg_strtou64(optarg);
-                               break;
-                       default:
-                               usage();
-                               exit(1);
+               case 'a':
+                       filter.search_all = 1;
+                       break;
+               case 'o':
+                       filter.objectid = arg_strtou64(optarg);
+                       break;
+               case 'g':
+                       filter.generation = arg_strtou64(optarg);
+                       break;
+               case 'l':
+                       filter.level = arg_strtou64(optarg);
+                       break;
+               default:
+                       usage();
+                       exit(1);
                }
        }