Message ID | 20231116160235.2708131-2-neal@gompa.dev (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enforce 4k sectorize by default for mkfs | expand |
On Thu, 16 Nov 2023 at 16:10, Neal Gompa <neal@gompa.dev> wrote: > > We have had working subpage support in Btrfs for many cycles now. > Generally, we do not want people creating filesystems by default > with non-4k sectorsizes since it creates portability problems. > > Signed-off-by: Neal Gompa <neal@gompa.dev> > > Reviewed-by: Anand Jain <anand.jain@oracle.com> > Reviewed-by: Qu Wenruo <wqu@suse.com> > Reviewed-by: Josef Bacik <josef@toxicpanda.com> Makes sense to me! Reviewed-by: Eric Curtin <ecurtin@redhat.com> Is mise le meas/Regards, Eric Curtin > --- > Documentation/Subpage.rst | 17 +++++++++-------- > Documentation/mkfs.btrfs.rst | 13 +++++++++---- > mkfs/main.c | 2 +- > 3 files changed, 19 insertions(+), 13 deletions(-) > > diff --git a/Documentation/Subpage.rst b/Documentation/Subpage.rst > index c762b6a3..1655ae7e 100644 > --- a/Documentation/Subpage.rst > +++ b/Documentation/Subpage.rst > @@ -9,18 +9,19 @@ to the exactly same size of the block and page. On x86_64 this is typically > pages, like 64KiB on 64bit ARM or PowerPC. This means filesystems created > with 64KiB sector size cannot be mounted on a system with 4KiB page size. > > -While with subpage support systems with 64KiB page size can create > -and mount filesystems with 4KiB sectorsize. This still needs to use option "-s > -4k" option for :command:`mkfs.btrfs`. > +Since v6.7, filesystems are created with a 4KiB sectorsize by default, > +though it remains possible to create filesystems with other page sizes > +(such as 64KiB with the "-s 64k" option for :command:`mkfs.btrfs`). This > +ensures that new filesystems are compatible across other architecture > +variants using larger page sizes. > > Requirements, limitations > ------------------------- > > -The initial subpage support has been added in v5.15, although it's still > -considered as experimental, most features are already working without problems. > -On a 64KiB page system filesystem with 4KiB sectorsize can be mounted and used > -as usual as long as the initial mount succeeds. There are cases a mount will be > -rejected when verifying compatible features. > +The initial subpage support has been added in v5.15. Most features are > +already working without problems. On a 64KiB page system, a filesystem with > +4KiB sectorsize can be mounted and used as long as the initial mount succeeds. > +Subpage support is used by default for systems with a non-4KiB page size since v6.7. > > Please refer to status page of :ref:`status-subpage-block-size` for > compatibility. > diff --git a/Documentation/mkfs.btrfs.rst b/Documentation/mkfs.btrfs.rst > index 7e23b9f6..be4f49cb 100644 > --- a/Documentation/mkfs.btrfs.rst > +++ b/Documentation/mkfs.btrfs.rst > @@ -122,10 +122,15 @@ OPTIONS > -s|--sectorsize <size> > Specify the sectorsize, the minimum data block allocation unit. > > - The default value is the page size and is autodetected. If the sectorsize > - differs from the page size, the created filesystem may not be mountable by the > - running kernel. Therefore it is not recommended to use this option unless you > - are going to mount it on a system with the appropriate page size. > + By default, the value is 4KiB, but it can be manually set to match the > + system page size. However, if the sector size is different from the page > + size, the resulting filesystem may not be mountable by the current > + kernel, apart from the default 4KiB. Hence, using this option is not > + advised unless you intend to mount it on a system with the suitable > + page size. > + > + .. note:: > + Versions prior to 6.7 set the sectorsize matching to the page size. > > -L|--label <string> > Specify a label for the filesystem. The *string* should be less than 256 > diff --git a/mkfs/main.c b/mkfs/main.c > index d984c995..0570c8f8 100644 > --- a/mkfs/main.c > +++ b/mkfs/main.c > @@ -1384,7 +1384,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv) > } > > if (!sectorsize) > - sectorsize = (u32)sysconf(_SC_PAGESIZE); > + sectorsize = (u32)SZ_4K; > if (btrfs_check_sectorsize(sectorsize)) > goto error; > > -- > 2.41.0 > >
diff --git a/Documentation/Subpage.rst b/Documentation/Subpage.rst index c762b6a3..1655ae7e 100644 --- a/Documentation/Subpage.rst +++ b/Documentation/Subpage.rst @@ -9,18 +9,19 @@ to the exactly same size of the block and page. On x86_64 this is typically pages, like 64KiB on 64bit ARM or PowerPC. This means filesystems created with 64KiB sector size cannot be mounted on a system with 4KiB page size. -While with subpage support systems with 64KiB page size can create -and mount filesystems with 4KiB sectorsize. This still needs to use option "-s -4k" option for :command:`mkfs.btrfs`. +Since v6.7, filesystems are created with a 4KiB sectorsize by default, +though it remains possible to create filesystems with other page sizes +(such as 64KiB with the "-s 64k" option for :command:`mkfs.btrfs`). This +ensures that new filesystems are compatible across other architecture +variants using larger page sizes. Requirements, limitations ------------------------- -The initial subpage support has been added in v5.15, although it's still -considered as experimental, most features are already working without problems. -On a 64KiB page system filesystem with 4KiB sectorsize can be mounted and used -as usual as long as the initial mount succeeds. There are cases a mount will be -rejected when verifying compatible features. +The initial subpage support has been added in v5.15. Most features are +already working without problems. On a 64KiB page system, a filesystem with +4KiB sectorsize can be mounted and used as long as the initial mount succeeds. +Subpage support is used by default for systems with a non-4KiB page size since v6.7. Please refer to status page of :ref:`status-subpage-block-size` for compatibility. diff --git a/Documentation/mkfs.btrfs.rst b/Documentation/mkfs.btrfs.rst index 7e23b9f6..be4f49cb 100644 --- a/Documentation/mkfs.btrfs.rst +++ b/Documentation/mkfs.btrfs.rst @@ -122,10 +122,15 @@ OPTIONS -s|--sectorsize <size> Specify the sectorsize, the minimum data block allocation unit. - The default value is the page size and is autodetected. If the sectorsize - differs from the page size, the created filesystem may not be mountable by the - running kernel. Therefore it is not recommended to use this option unless you - are going to mount it on a system with the appropriate page size. + By default, the value is 4KiB, but it can be manually set to match the + system page size. However, if the sector size is different from the page + size, the resulting filesystem may not be mountable by the current + kernel, apart from the default 4KiB. Hence, using this option is not + advised unless you intend to mount it on a system with the suitable + page size. + + .. note:: + Versions prior to 6.7 set the sectorsize matching to the page size. -L|--label <string> Specify a label for the filesystem. The *string* should be less than 256 diff --git a/mkfs/main.c b/mkfs/main.c index d984c995..0570c8f8 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -1384,7 +1384,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv) } if (!sectorsize) - sectorsize = (u32)sysconf(_SC_PAGESIZE); + sectorsize = (u32)SZ_4K; if (btrfs_check_sectorsize(sectorsize)) goto error;