On Thu, Sep 14, 2023 at 02:36:40PM +0200, cem@xxxxxxxxxx wrote: > From: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > > The current output message prints out a suggestion of an AG size to be > used in lieu of the user-defined one. > The problem is this suggestion is printed in filesystem blocks, while > agsize= option receives a size in bytes (or m, g). Hmmm. The actual definition of the parameter in mkfs.xfs has ".convert = true", which means it will take a value in filesystem blocks by appending "b" to the number. i.e. anything that is defined as a "value" with that supports a suffix like "m" or "g" requires conversion via cvtnum() to turn it into a byte-based units will also support suffixes for block and sector size units. Hence "-d agsize=10000b" will make an AG of 10000 filesystem blocks in size, or 40000kB in size if the block size 4kB.... # mkfs.xfs -f -dagsize=100000b /dev/vdb meta-data=/dev/vdb isize=512 agcount=42, agsize=100000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=4194304, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done. # > This patch tries to make user's life easier by outputing the suggesting > in bytes directly. > > Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > --- > mkfs/xfs_mkfs.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index d3a15cf44..827d5b656 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -3179,9 +3179,11 @@ _("agsize rounded to %lld, sunit = %d\n"), > if (cli_opt_set(&dopts, D_AGCOUNT) || > cli_opt_set(&dopts, D_AGSIZE)) { > printf(_( > -"Warning: AG size is a multiple of stripe width. This can cause performance\n\ > -problems by aligning all AGs on the same disk. To avoid this, run mkfs with\n\ > -an AG size that is one stripe unit smaller or larger, for example %llu.\n"), > +"Warning: AG size is a multiple of stripe width. This can cause performance\n\ > +problems by aligning all AGs on the same disk. To avoid this, run mkfs with\n\ > +an AG size that is one stripe unit smaller or larger,\n\ > +for example: agsize=%llu (%llu blks).\n"), > + (unsigned long long)((cfg->agsize - dsunit) * cfg->blocksize), > (unsigned long long)cfg->agsize - dsunit); > fflush(stdout); > goto validate; I have no problem with the change, though I think the man page needs updating to remove the "takes a value in bytes" because it has taken a value that supports all the suffix types the man page defines for quite a long time.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx