btrfs-progs: show-super: Add option to print superblock at given bytenr
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Mon, 2 Nov 2015 08:34:19 +0000 (16:34 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 2 Nov 2015 14:45:52 +0000 (15:45 +0100)
Add '-s <sb_bytenr>' option to show superblock at given bytenr.

This is very useful to debug non-standard btrfs, like debuging the
1st stage btrfs of btrfs-convert.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ minor updates in docs ]
Signed-off-by: David Sterba <dsterba@suse.com>
Documentation/btrfs-show-super.asciidoc
btrfs-show-super.c

index 1646be3..8866c94 100644 (file)
@@ -40,6 +40,10 @@ If several '-i <super_mirror>' are given, only the last one is valid.
 Attempt to print the superblock even if no superblock magic is found.  May end
 badly.
 
+-s <bytenr>::
+specifiy offset to a superblock in a non-standard location at 'bytenr', useful
+for debugging (disables the '-f' option)
+
 EXIT STATUS
 -----------
 *btrfs-show-super* will return 0 if no error happened.
index 27414c8..d8ad69e 100644 (file)
@@ -48,6 +48,7 @@ static void print_usage(void)
        fprintf(stderr, "\t-a : print information of all superblocks\n");
        fprintf(stderr, "\t-i <super_mirror> : specify which mirror to print out\n");
        fprintf(stderr, "\t-F : attempt to dump superblocks with bad magic\n");
+       fprintf(stderr, "\t-s <bytenr> : specify alternate superblock offset\n");
        fprintf(stderr, "%s\n", PACKAGE_STRING);
 }
 
@@ -63,7 +64,7 @@ int main(int argc, char **argv)
        u64 arg;
        u64 sb_bytenr = btrfs_sb_offset(0);
 
-       while ((opt = getopt(argc, argv, "fFai:")) != -1) {
+       while ((opt = getopt(argc, argv, "fFai:s:")) != -1) {
                switch (opt) {
                case 'i':
                        arg = arg_strtou64(optarg);
@@ -86,6 +87,10 @@ int main(int argc, char **argv)
                case 'F':
                        force = 1;
                        break;
+               case 's':
+                       sb_bytenr = arg_strtou64(optarg);
+                       all = 0;
+                       break;
                default:
                        print_usage();
                        exit(1);