Re: [PATCH] btrfs-progs: check for minimal needed number of zones
From: Johannes Thumshirn <hidden>
Date: 2021-05-17 07:40:52
On 12/05/2021 16:19, Naohiro Aota wrote:
On Wed, May 12, 2021 at 04:53:05PM +0900, Johannes Thumshirn wrote:quoted
In order to create a usable zoned filesystem a minimum of 5 zones is needed: - 2 zones for the 1st superblock - 1 zone for the system block group - 1 zone for a metadata block group - 1 zone for a data block group Some tests in xfstests create a sized filesystem and depending on the zone size of the underlying device, it may happen, that this filesystem is too small to be used. It's better to not create a filesystem at all than to create an unusable filesystem.We also want to think about reserved zones for regular superblocks. For example, with zone_size == 16M, we reserve zone #4 for regular superblock at 64MB, and this setup require one more zone to allocate a data block group.quoted
Signed-off-by: Johannes Thumshirn <redacted> --- mkfs/main.c | 8 ++++++++ 1 file changed, 8 insertions(+)diff --git a/mkfs/main.c b/mkfs/main.c index 104eead2cee8..a56d970f6362 100644 --- a/mkfs/main.c +++ b/mkfs/main.c@@ -1283,6 +1283,14 @@ int BOX_MAIN(mkfs)(int argc, char **argv) min_dev_size); goto error; } + if (zoned && block_count && block_count < 5 * zone_size(file)) { + error("size %llu is too small to make a usable filesystem", + block_count); + error("minimum size for a zoned btrfs filesystem is %llu", + min_dev_size);This should be "5 * zone_size(file)". How about extending btrfs_min_dev_size() for zoned? Then, we can avoid repeating the size check code.
I'll look into it.