Subpage support

Subpage block size support, or just subpage for short, is a feature to allow using a filesystem that has different size of data block size (sectorsize) and the host CPU page size. For easier implementation the support was limited to the exactly same size of the block and page. On x86_64 this is typically 4KiB, but there are other architectures commonly used that make use of larger pages, like 64KiB on 64bit ARM or PowerPC or 16KiB on Apple Silicon. This means filesystems created with 64KiB sector size cannot be mounted on a system with 4KiB page size.

Since btrfs-progs 6.7, filesystems are created with a 4KiB sector size by default, though it remains possible to create filesystems with other sector 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 kernel 5.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 btrfs-progs 6.7.

Please refer to status page of Subpage block size for compatibility.