btrfs-progs: show-super: Add option to print superblock at given bytenr

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>
This commit is contained in:
Qu Wenruo 2015-11-02 16:34:19 +08:00 committed by David Sterba
parent b1c222321e
commit c328e0db4a
2 changed files with 10 additions and 1 deletions

View 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.

View 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);