92 lines
3.8 KiB
Diff
92 lines
3.8 KiB
Diff
|
From: Neal Gompa <neal@gompa.dev>
|
||
|
Subject: [PATCH 1/1] btrfs-progs: mkfs: Enforce 4k sectorsize by default
|
||
|
Date: Wed, 22 Mar 2023 18:17:14 -0400
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
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>
|
||
|
|
||
|
---
|
||
|
Documentation/Subpage.rst | 15 ++++++++-------
|
||
|
Documentation/mkfs.btrfs.rst | 13 +++++++++----
|
||
|
mkfs/main.c | 2 +-
|
||
|
3 files changed, 18 insertions(+), 12 deletions(-)
|
||
|
|
||
|
diff --git a/Documentation/Subpage.rst b/Documentation/Subpage.rst
|
||
|
index 21a495d5..39ef7d6d 100644
|
||
|
--- a/Documentation/Subpage.rst
|
||
|
+++ b/Documentation/Subpage.rst
|
||
|
@@ -9,17 +9,18 @@ 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 (still needs
|
||
|
-"-s 4k" option for mkfs.btrfs) and mount filesystems with 4KiB sectorsize,
|
||
|
-allowing us to push 4KiB sectorsize as default sectorsize for all platforms in the
|
||
|
-near future.
|
||
|
+Since v6.3, 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 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 at the time of writing (v5.18), most features are
|
||
|
-already working without problems.
|
||
|
+The initial subpage support has been added in v5.15. Most features are
|
||
|
+already working without problems. Subpage support is used by default
|
||
|
+for systems with a non-4KiB page size since v6.3.
|
||
|
|
||
|
End users can mount filesystems with 4KiB sectorsize and do their usual
|
||
|
workload, while should not notice any obvious change, as long as the initial
|
||
|
diff --git a/Documentation/mkfs.btrfs.rst b/Documentation/mkfs.btrfs.rst
|
||
|
index ba7227b3..16abf0ca 100644
|
||
|
--- a/Documentation/mkfs.btrfs.rst
|
||
|
+++ b/Documentation/mkfs.btrfs.rst
|
||
|
@@ -116,10 +116,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.3 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 f5e34cbd..5e1834d7 100644
|
||
|
--- a/mkfs/main.c
|
||
|
+++ b/mkfs/main.c
|
||
|
@@ -1207,7 +1207,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.39.2
|
||
|
|