Thread (5 messages) 5 messages, 3 authors, 2021-05-17

Re: [PATCH] btrfs-progs: check for minimal needed number of zones

From: Naohiro Aota <naohiro.aota@wdc.com>
Date: 2021-05-12 14:19:33

On Wed, May 12, 2021 at 04:53:05PM +0900, Johannes Thumshirn wrote:
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 hunk ↗ jump to hunk
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.
+		goto error;
+	}
+
 	for (i = saved_optind; i < saved_optind + dev_cnt; i++) {
 		char *path;
 
-- 
2.31.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help