Message ID | 87y3o7zikq.wl-satoru.takeuchi@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 2017/10/19 16:45, Satoru Takeuchi wrote: > Some tools can select which superblock these commands use by "-s <superblock>" > option. Although this option says the valid values are 0-2, we can set 3 > if filesystem is very large. > Hello, Wiki says there are 4 superblocks. However in the implementation BTRFS_SUPER_MIROR_MAX is 3 and 0 indicates the block at 64K (disk-io.h of btrfs-progs), therefore I think there is no 4th superblock actually. Regards, Tomohiro -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2017年10月19日 16:34, Misono, Tomohiro wrote: > On 2017/10/19 16:45, Satoru Takeuchi wrote: >> Some tools can select which superblock these commands use by "-s <superblock>" >> option. Although this option says the valid values are 0-2, we can set 3 >> if filesystem is very large. >> > > Hello, > Wiki says there are 4 superblocks. However in the implementation BTRFS_SUPER_MIROR_MAX > is 3 and 0 indicates the block at 64K (disk-io.h of btrfs-progs), therefore I think > there is no 4th superblock actually. Kernel implementation also shows that it will only update up to 3 superblocks: --- if (max_mirrors == 0) max_mirrors = BTRFS_SUPER_MIRROR_MAX; for (i = 0; i < max_mirrors; i++) { bytenr = btrfs_sb_offset(i); if (bytenr + BTRFS_SUPER_INFO_SIZE >= device->commit_total_bytes) break; --- And BTRFS_SUPER_MIRROR_MAX is 3: --- #define BTRFS_SUPER_MIRROR_MAX 3 --- So even you can set any value and btrfs_sb_offset() can calculate the super block offset, you will just read out some garbage. Thanks, Qu > > Regards, > Tomohiro > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
At Thu, 19 Oct 2017 17:05:18 +0800, Qu Wenruo wrote: > > > > On 2017年10月19日 16:34, Misono, Tomohiro wrote: > > On 2017/10/19 16:45, Satoru Takeuchi wrote: > >> Some tools can select which superblock these commands use by "-s <superblock>" > >> option. Although this option says the valid values are 0-2, we can set 3 > >> if filesystem is very large. > >> > > > > Hello, > > Wiki says there are 4 superblocks. However in the implementation BTRFS_SUPER_MIROR_MAX > > is 3 and 0 indicates the block at 64K (disk-io.h of btrfs-progs), therefore I think > > there is no 4th superblock actually. > > Kernel implementation also shows that it will only update up to 3 > superblocks: > > --- > if (max_mirrors == 0) > max_mirrors = BTRFS_SUPER_MIRROR_MAX; > > for (i = 0; i < max_mirrors; i++) { > bytenr = btrfs_sb_offset(i); > if (bytenr + BTRFS_SUPER_INFO_SIZE >= > device->commit_total_bytes) > break; > --- > > And BTRFS_SUPER_MIRROR_MAX is 3: > --- > #define BTRFS_SUPER_MIRROR_MAX 3 > --- > > So even you can set any value and btrfs_sb_offset() can calculate the > super block offset, you will just read out some garbage. My fault, sorry. I should read source more carefully. And thank you both to let me know my mistake. Thanks, Satoru > > Thanks, > Qu > > > > Regards, > > Tomohiro > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/btrfs-check.asciidoc b/Documentation/btrfs-check.asciidoc index fbf4884..a557cff 100644 --- a/Documentation/btrfs-check.asciidoc +++ b/Documentation/btrfs-check.asciidoc @@ -74,7 +74,7 @@ run in read-only mode, this option exists to calm potential panic when users are going to run the checker -s|--super <superblock>:: -use 'superblock'th superblock copy, valid values are 0, 1 or 2 if the +use 'superblock'th superblock copy, valid values are 0, 1, 2 or 3 if the respective superblock offset is within the device size + This can be used to use a different starting point if some of the primary diff --git a/Documentation/btrfs-restore.asciidoc b/Documentation/btrfs-restore.asciidoc index 090dcc5..c19e0e2 100644 --- a/Documentation/btrfs-restore.asciidoc +++ b/Documentation/btrfs-restore.asciidoc @@ -63,7 +63,7 @@ use <bytenr> to read the root tree only restore files that are under specified subvolume root pointed by <bytenr> -u|--super <mirror>:: -use given superblock mirror identified by <mirror>, it can be 0,1 or 2 +use given superblock mirror identified by <mirror>, it can be 0, 1, 2 or 3 -r|--root <rootid>:: only restore files that are under a specified subvolume whose objectid is <rootid> diff --git a/Documentation/btrfs-select-super.asciidoc b/Documentation/btrfs-select-super.asciidoc index 6e94a03..7f96bd8 100644 --- a/Documentation/btrfs-select-super.asciidoc +++ b/Documentation/btrfs-select-super.asciidoc @@ -32,13 +32,14 @@ Superblock copies exist in the following offsets on the device: - primary: '64KiB' (65536) - 1st copy: '64MiB' (67108864) - 2nd copy: '256GiB' (274877906944) +- 3rd copy: '1PiB' (1125899906842624) A superblock size is '4KiB' (4096). OPTIONS ------- -s|--super <superblock>:: -use 'superblock'th superblock copy, valid values are 0 1 or 2 if the +use 'superblock'th superblock copy, valid values are 0, 1, 2 or 3 if the respective superblock offset is within the device size SEE ALSO
Some tools can select which superblock these commands use by "-s <superblock>" option. Although this option says the valid values are 0-2, we can set 3 if filesystem is very large. Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com> --- Documentation/btrfs-check.asciidoc | 2 +- Documentation/btrfs-restore.asciidoc | 2 +- Documentation/btrfs-select-super.asciidoc | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-)