public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Luis Chamberlain <mcgrof@kernel.org>
To: dsterba@suse.com, johannes.thumshirn@wdc.com,
	naohiro.aota@wdc.com, linux-btrfs@vger.kernel.org,
	damien.lemoal@wdc.com
Cc: pankydev8@gmail.com, p.raghav@samsung.com, mcgrof@kernel.org
Subject: [PATCH 1/2] btrfs-progs: mkfs: fix error message for minimum zoned filesystem size
Date: Fri,  9 Sep 2022 14:48:09 -0700	[thread overview]
Message-ID: <20220909214810.761928-2-mcgrof@kernel.org> (raw)
In-Reply-To: <20220909214810.761928-1-mcgrof@kernel.org>

The minimum size for a filesystem on a zone storage device
actually depends on the size of a devices' zone size, given 5
dedicated zones are required, regardless of their fulll size
of the drive:

  * 2 zones for the primary superblock
  * 1 zone for the system block group
  * 1 zone for a metadata block group
  * 1 zone for a data block group

So the minimum size for a btrfs filesystem for a zone storage
device is completely device specific.

The check for this however complains about the minimum
size required for btrfs in general, not for the above
consideration. Fix the error message so that users
understand the exact reason why mkfs might fail
if you want to create a filesystem which cannot
possibly fit into less than 5 zones. Also clarify how
the minimum size then is completely device specific.

Without this a user can end up scratching their heads
if they tried to create say a 512 MiB filesystem on
a 100 GiB NVMe ZNS drive with 128 MiB zone size.
In this case 5 * 128 = 640 MiB is the minimum required.
Without this patch a user will end up with the following
error message:

ERROR: size 268435456 is too small to make a usable filesystem
ERROR: minimum size for a zoned btrfs filesystem is 47185920

Clearly 268435456 (256 MiB) >  47185920 (45 MiB). Fix
the error message so that the user knows what to do if
they want the mimimum filesystem for btrfs zone storage
device.

With this now the user sees:

ERROR: Size 512.00MiB is too small to make a usable filesystem.
ERROR: The minimum size for a zoned btrfs filesystem requires
ERROR: 5 dedicated zones. This device's zone size is 128.00MiB so
ERROR: the minimum size for a btrfs filesystem for this zoned
ERROR: storage device (/dev/nvme5n1) is 640.00MiB

The following fstests fail because of this issue, and at first glance
it was not clear why:

  * brfs/132
  * generic/226
  * generic/416
  * generic/650

Now it's clear what the issue is and what needs to get done to
fix those respective tests. But note, that if working on a sequential
zone then parallel writes are expected to fail, so tests which require
that and use parallel writes must also check for sequential zones
and bail if one is to be used. Each of these tests needs to be adapted
a bit for zoned devices to work properly.

Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 mkfs/main.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/mkfs/main.c b/mkfs/main.c
index eaecdc061dfe..ebf462587bd5 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -1401,10 +1401,14 @@ int BOX_MAIN(mkfs)(int argc, char **argv)
 	 * 1 zone for a data block group
 	 */
 	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);
+		error("Size %s is too small to make a usable filesystem.",
+			pretty_size_mode(block_count, UNITS_DEFAULT));
+		error("The minimum size for a zoned btrfs filesystem requires");
+		error("5 dedicated zones. This device's zone size is %s so",
+			pretty_size_mode(zone_size(file), UNITS_DEFAULT));
+		error("the minimum size for a btrfs filesystem for this zoned");
+		error("storage device (%s) is %s",
+			file, pretty_size_mode(5 * zone_size(file), UNITS_DEFAULT));
 		goto error;
 	}
 
-- 
2.35.1


  reply	other threads:[~2022-09-09 21:48 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-09 21:48 [PATCH 0/2] btrfs-progs: minor mkfs fs size error message enhancements Luis Chamberlain
2022-09-09 21:48 ` Luis Chamberlain [this message]
2022-09-14  8:28   ` [PATCH 1/2] btrfs-progs: mkfs: fix error message for minimum zoned filesystem size Pankaj Raghav
2022-09-09 21:48 ` [PATCH 2/2] btrfs-progs: mkfs: use pretty_size_mode() on min size error Luis Chamberlain
2022-09-09 23:10   ` Wang Yugui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220909214810.761928-2-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=damien.lemoal@wdc.com \
    --cc=dsterba@suse.com \
    --cc=johannes.thumshirn@wdc.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=naohiro.aota@wdc.com \
    --cc=p.raghav@samsung.com \
    --cc=pankydev8@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox