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

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help