* make the size options to xfs_growfs a bit more useful v2 @ 2026-07-30 12:28 Christoph Hellwig 2026-07-30 12:28 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig 2026-07-30 12:28 ` [PATCH 2/2] growfs: clarify the man page a bit Christoph Hellwig 0 siblings, 2 replies; 6+ messages in thread From: Christoph Hellwig @ 2026-07-30 12:28 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs Use the same cvtnum-base parsing as mkfs to allow for easy human readable sizes in growfs. Changes since v1: - a version that actually applies and compiles against for-next, sorry ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] growfs: support unit postfixes when specifying sizes 2026-07-30 12:28 make the size options to xfs_growfs a bit more useful v2 Christoph Hellwig @ 2026-07-30 12:28 ` Christoph Hellwig 2026-07-30 15:49 ` Darrick J. Wong 2026-07-30 12:28 ` [PATCH 2/2] growfs: clarify the man page a bit Christoph Hellwig 1 sibling, 1 reply; 6+ messages in thread From: Christoph Hellwig @ 2026-07-30 12:28 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs Try using cvtnum to parse the sizes for the -D, -L and -R arguments, and only fall back to plain integer parsing and interpreting it as blocks when that fails. This matches the mkfs UI and makes specifying a size significantly easier. Signed-off-by: Christoph Hellwig <hch@lst.de> --- growfs/xfs_growfs.c | 30 +++++++++++++++++++++++++++--- man/man8/xfs_growfs.8 | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c index 0d0b2ae3e739..6e65f037c5cb 100644 --- a/growfs/xfs_growfs.c +++ b/growfs/xfs_growfs.c @@ -5,6 +5,7 @@ */ #include "libxfs.h" +#include "libfrog/convert.h" #include "libfrog/paths.h" #include "libfrog/fsgeom.h" @@ -31,6 +32,19 @@ Options:\n\ exit(2); } +static long long +parse_size( + struct xfs_fsop_geom *geo, + const char *size_str) +{ + long long size; + + size = cvtnum(geo->blocksize, geo->sectsize, size_str); + if (size == -1) + return strtoll(size_str, NULL, 10); + return size / geo->blocksize; +} + int main(int argc, char **argv) { @@ -55,6 +69,9 @@ main(int argc, char **argv) struct xfs_fsop_geom ngeo; /* new fs geometry */ int rflag; /* -r flag */ long long rsize; /* new rt size in fs blocks */ + const char *dsize_str = NULL; + const char *lsize_str = NULL; + const char *rsize_str = NULL; int xflag; /* -x flag */ char *fname; /* mount point name */ char *datadev; /* data device name */ @@ -77,7 +94,7 @@ main(int argc, char **argv) while ((c = getopt(argc, argv, "dD:e:ilL:m:np:rR:t:xV")) != EOF) { switch (c) { case 'D': - dsize = strtoll(optarg, NULL, 10); + dsize_str = strdup(optarg); fallthrough; case 'd': dflag = 1; @@ -90,7 +107,7 @@ main(int argc, char **argv) lflag = iflag = 1; break; case 'L': - lsize = strtoll(optarg, NULL, 10); + lsize_str = strdup(optarg); fallthrough; case 'l': lflag = 1; @@ -106,7 +123,7 @@ main(int argc, char **argv) progname = optarg; break; case 'R': - rsize = strtoll(optarg, NULL, 10); + rsize_str = strdup(optarg); fallthrough; case 'r': rflag = 1; @@ -211,6 +228,13 @@ main(int argc, char **argv) xfs_report_geom(&geo, datadev, logdev, rtdev); + if (dsize_str) + dsize = parse_size(&geo, dsize_str); + if (lsize_str) + lsize = parse_size(&geo, lsize_str); + if (rsize_str) + rsize = parse_size(&geo, rsize_str); + if (geo.rtstart) { xfs_daddr_t rtstart = geo.rtstart * (geo.blocksize / BBSIZE); diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 index 2e329fa61758..d6e5fe13e943 100644 --- a/man/man8/xfs_growfs.8 +++ b/man/man8/xfs_growfs.8 @@ -57,6 +57,32 @@ The filesystem must be mounted to be grown (see .BR mount (8)). The existing contents of the filesystem are undisturbed, and the added space becomes available for additional file storage. +The following lists possible multiplication suffixes for any argument specifying +sizes. +.RS +.PD 0 +.HP +.BR s "\ \-\ multiply by sector size (default = 512, see " \-s +option below). +.HP +.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b +option below). +.HP +.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)." +.HP +.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)." +.HP +.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)." +.HP +.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)." +.HP +.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)." +.HP +.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)." +.PD +.RE +If no suffix is specified, the sizes are in file system blocks. +.RE .SH OPTIONS .TP .BI "\-d | \-D " size @@ -67,9 +93,8 @@ option is given, the data section is changed to that .IR size , otherwise the data section is grown to the largest size possible with the .B \-d -option. The size is expressed in filesystem blocks. A filesystem with only -1 AG cannot be shrunk further, and a filesystem cannot be shrunk to the point -where it would only have 1 AG. +option. A filesystem with only 1 AG cannot be shrunk further, and a +filesystem cannot be shrunk to the point where it would only have 1 AG. .B [NOTE: Only shrinking the last AG without removing it is implemented] .TP .B \-e @@ -90,8 +115,7 @@ shrunk, or moved. If the .I size option is given, the log section is changed to be that .IR size , -if possible. The size is expressed in filesystem blocks. -The size of an internal log must be smaller than the size +if possible. The size of an internal log must be smaller than the size of an allocation group (this value is printed at .BR mkfs (8) time). If neither @@ -124,9 +148,8 @@ Specifies that the real-time section of the filesystem should be grown. If the option is given, the real-time section is grown to that size, otherwise the real-time section is grown to the largest size possible with the .B \-r -option. The size is expressed in filesystem blocks. -The filesystem does not need to have contained a real-time section before -the +option. The filesystem does not need to have contained a real-time section +before the .B xfs_growfs operation. .TP -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] growfs: support unit postfixes when specifying sizes 2026-07-30 12:28 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig @ 2026-07-30 15:49 ` Darrick J. Wong 0 siblings, 0 replies; 6+ messages in thread From: Darrick J. Wong @ 2026-07-30 15:49 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Andrey Albershteyn, linux-xfs On Thu, Jul 30, 2026 at 02:28:15PM +0200, Christoph Hellwig wrote: > Try using cvtnum to parse the sizes for the -D, -L and -R arguments, > and only fall back to plain integer parsing and interpreting it as > blocks when that fails. This matches the mkfs UI and makes specifying > a size significantly easier. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > growfs/xfs_growfs.c | 30 +++++++++++++++++++++++++++--- > man/man8/xfs_growfs.8 | 39 +++++++++++++++++++++++++++++++-------- > 2 files changed, 58 insertions(+), 11 deletions(-) > > diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c > index 0d0b2ae3e739..6e65f037c5cb 100644 > --- a/growfs/xfs_growfs.c > +++ b/growfs/xfs_growfs.c > @@ -5,6 +5,7 @@ > */ > > #include "libxfs.h" > +#include "libfrog/convert.h" > #include "libfrog/paths.h" > #include "libfrog/fsgeom.h" > > @@ -31,6 +32,19 @@ Options:\n\ > exit(2); > } > > +static long long > +parse_size( > + struct xfs_fsop_geom *geo, > + const char *size_str) > +{ > + long long size; > + > + size = cvtnum(geo->blocksize, geo->sectsize, size_str); > + if (size == -1) > + return strtoll(size_str, NULL, 10); > + return size / geo->blocksize; Hmmm. Previously, "-D 12345" meant "grow to 12345 fsblocks", right? However, cvtnum(, "12345") returns 12345, which is now divided by the fsblock size and we'll "grow" the filesystem to 3x 4k fsblocks. So I don't think this quite works, though the ability to specify "-D 12345M" is very appealing. --D > +} > + > int > main(int argc, char **argv) > { > @@ -55,6 +69,9 @@ main(int argc, char **argv) > struct xfs_fsop_geom ngeo; /* new fs geometry */ > int rflag; /* -r flag */ > long long rsize; /* new rt size in fs blocks */ > + const char *dsize_str = NULL; > + const char *lsize_str = NULL; > + const char *rsize_str = NULL; > int xflag; /* -x flag */ > char *fname; /* mount point name */ > char *datadev; /* data device name */ > @@ -77,7 +94,7 @@ main(int argc, char **argv) > while ((c = getopt(argc, argv, "dD:e:ilL:m:np:rR:t:xV")) != EOF) { > switch (c) { > case 'D': > - dsize = strtoll(optarg, NULL, 10); > + dsize_str = strdup(optarg); > fallthrough; > case 'd': > dflag = 1; > @@ -90,7 +107,7 @@ main(int argc, char **argv) > lflag = iflag = 1; > break; > case 'L': > - lsize = strtoll(optarg, NULL, 10); > + lsize_str = strdup(optarg); > fallthrough; > case 'l': > lflag = 1; > @@ -106,7 +123,7 @@ main(int argc, char **argv) > progname = optarg; > break; > case 'R': > - rsize = strtoll(optarg, NULL, 10); > + rsize_str = strdup(optarg); > fallthrough; > case 'r': > rflag = 1; > @@ -211,6 +228,13 @@ main(int argc, char **argv) > > xfs_report_geom(&geo, datadev, logdev, rtdev); > > + if (dsize_str) > + dsize = parse_size(&geo, dsize_str); > + if (lsize_str) > + lsize = parse_size(&geo, lsize_str); > + if (rsize_str) > + rsize = parse_size(&geo, rsize_str); > + > if (geo.rtstart) { > xfs_daddr_t rtstart = geo.rtstart * (geo.blocksize / BBSIZE); > > diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 > index 2e329fa61758..d6e5fe13e943 100644 > --- a/man/man8/xfs_growfs.8 > +++ b/man/man8/xfs_growfs.8 > @@ -57,6 +57,32 @@ The filesystem must be mounted to be grown (see > .BR mount (8)). > The existing contents of the filesystem are undisturbed, and the added space > becomes available for additional file storage. > +The following lists possible multiplication suffixes for any argument specifying > +sizes. > +.RS > +.PD 0 > +.HP > +.BR s "\ \-\ multiply by sector size (default = 512, see " \-s > +option below). > +.HP > +.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b > +option below). > +.HP > +.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)." > +.HP > +.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)." > +.HP > +.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)." > +.HP > +.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)." > +.HP > +.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)." > +.HP > +.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)." > +.PD > +.RE > +If no suffix is specified, the sizes are in file system blocks. > +.RE > .SH OPTIONS > .TP > .BI "\-d | \-D " size > @@ -67,9 +93,8 @@ option is given, the data section is changed to that > .IR size , > otherwise the data section is grown to the largest size possible with the > .B \-d > -option. The size is expressed in filesystem blocks. A filesystem with only > -1 AG cannot be shrunk further, and a filesystem cannot be shrunk to the point > -where it would only have 1 AG. > +option. A filesystem with only 1 AG cannot be shrunk further, and a > +filesystem cannot be shrunk to the point where it would only have 1 AG. > .B [NOTE: Only shrinking the last AG without removing it is implemented] > .TP > .B \-e > @@ -90,8 +115,7 @@ shrunk, or moved. If the > .I size > option is given, the log section is changed to be that > .IR size , > -if possible. The size is expressed in filesystem blocks. > -The size of an internal log must be smaller than the size > +if possible. The size of an internal log must be smaller than the size > of an allocation group (this value is printed at > .BR mkfs (8) > time). If neither > @@ -124,9 +148,8 @@ Specifies that the real-time section of the filesystem should be grown. If the > option is given, the real-time section is grown to that size, otherwise > the real-time section is grown to the largest size possible with the > .B \-r > -option. The size is expressed in filesystem blocks. > -The filesystem does not need to have contained a real-time section before > -the > +option. The filesystem does not need to have contained a real-time section > +before the > .B xfs_growfs > operation. > .TP > -- > 2.53.0 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] growfs: clarify the man page a bit 2026-07-30 12:28 make the size options to xfs_growfs a bit more useful v2 Christoph Hellwig 2026-07-30 12:28 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig @ 2026-07-30 12:28 ` Christoph Hellwig 2026-07-30 15:44 ` Darrick J. Wong 1 sibling, 1 reply; 6+ messages in thread From: Christoph Hellwig @ 2026-07-30 12:28 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs While no RT section needs to exist for GROWFS_RT to work, the buftarg must point to a block device already. Signed-off-by: Christoph Hellwig <hch@lst.de> --- man/man8/xfs_growfs.8 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 index d6e5fe13e943..1aa57fb0308f 100644 --- a/man/man8/xfs_growfs.8 +++ b/man/man8/xfs_growfs.8 @@ -151,7 +151,8 @@ the real-time section is grown to the largest size possible with the option. The filesystem does not need to have contained a real-time section before the .B xfs_growfs -operation. +operation, but it must have been mounted with the -o rtdev option pointing +to a block device. .TP .B \-t Specifies an alternate mount table file (default is -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] growfs: clarify the man page a bit 2026-07-30 12:28 ` [PATCH 2/2] growfs: clarify the man page a bit Christoph Hellwig @ 2026-07-30 15:44 ` Darrick J. Wong 0 siblings, 0 replies; 6+ messages in thread From: Darrick J. Wong @ 2026-07-30 15:44 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Andrey Albershteyn, linux-xfs On Thu, Jul 30, 2026 at 02:28:16PM +0200, Christoph Hellwig wrote: > While no RT section needs to exist for GROWFS_RT to work, the buftarg > must point to a block device already. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > man/man8/xfs_growfs.8 | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 > index d6e5fe13e943..1aa57fb0308f 100644 > --- a/man/man8/xfs_growfs.8 > +++ b/man/man8/xfs_growfs.8 > @@ -151,7 +151,8 @@ the real-time section is grown to the largest size possible with the > option. The filesystem does not need to have contained a real-time section > before the > .B xfs_growfs > -operation. > +operation, but it must have been mounted with the -o rtdev option pointing > +to a block device. Can you grow an internal rt section? --D > .TP > .B \-t > Specifies an alternate mount table file (default is > -- > 2.53.0 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* make the size options to xfs_growfs a bit more useful @ 2026-07-30 12:25 Christoph Hellwig 2026-07-30 12:25 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig 0 siblings, 1 reply; 6+ messages in thread From: Christoph Hellwig @ 2026-07-30 12:25 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs Use the same cvtnum-base parsing as mkfs to allow for easy human readable sizes in growfs. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] growfs: support unit postfixes when specifying sizes 2026-07-30 12:25 make the size options to xfs_growfs a bit more useful Christoph Hellwig @ 2026-07-30 12:25 ` Christoph Hellwig 0 siblings, 0 replies; 6+ messages in thread From: Christoph Hellwig @ 2026-07-30 12:25 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs Try using cvtnum to parse the sizes for the -D, -L and -R arguments, and only fall back to plain integer parsing and interpreting it as blocks when that fails. This matches the mkfs UI and makes specifying a size significantly easier. Signed-off-by: Christoph Hellwig <hch@lst.de> --- growfs/xfs_growfs.c | 32 ++++++++++++++++++++++++++++---- man/man8/xfs_growfs.8 | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c index 0d0b2ae3e739..184631b1735b 100644 --- a/growfs/xfs_growfs.c +++ b/growfs/xfs_growfs.c @@ -5,6 +5,7 @@ */ #include "libxfs.h" +#include "libfrog/convert.h" #include "libfrog/paths.h" #include "libfrog/fsgeom.h" @@ -31,6 +32,19 @@ Options:\n\ exit(2); } +static long long +parse_size( + struct xfs_fsop_geom *geo, + const char *size_str) +{ + long long size; + + size = cvtnum(geo->blocksize, geo->sectsize, size_str); + if (size == -1) + return strtoll(size_str, NULL, 10); + return size / geo->blocksize; +} + int main(int argc, char **argv) { @@ -55,6 +69,9 @@ main(int argc, char **argv) struct xfs_fsop_geom ngeo; /* new fs geometry */ int rflag; /* -r flag */ long long rsize; /* new rt size in fs blocks */ + const char *dsize_str = NULL; + const char *lsize_str = NULL; + const char *rsize_str = NULL; int xflag; /* -x flag */ char *fname; /* mount point name */ char *datadev; /* data device name */ @@ -77,7 +94,7 @@ main(int argc, char **argv) while ((c = getopt(argc, argv, "dD:e:ilL:m:np:rR:t:xV")) != EOF) { switch (c) { case 'D': - dsize = strtoll(optarg, NULL, 10); + dsize_str = strdup(optarg); fallthrough; case 'd': dflag = 1; @@ -90,7 +107,7 @@ main(int argc, char **argv) lflag = iflag = 1; break; case 'L': - lsize = strtoll(optarg, NULL, 10); + lsize_str = strdup(optarg); fallthrough; case 'l': lflag = 1; @@ -106,7 +123,7 @@ main(int argc, char **argv) progname = optarg; break; case 'R': - rsize = strtoll(optarg, NULL, 10); + rsize_str = strdup(optarg); fallthrough; case 'r': rflag = 1; @@ -202,7 +219,7 @@ main(int argc, char **argv) progname, fname); exit(1); } - if (rflag && (!xi.rt.dev && !geo.rtstart)) { + if (rflag && (!xi.rt.dev && !xi.nr_raid_devices & !geo.rtstart)) { fprintf(stderr, _("%s: failed to access realtime device for %s\n"), progname, fname); @@ -211,6 +228,13 @@ main(int argc, char **argv) xfs_report_geom(&geo, datadev, logdev, rtdev); + if (dsize_str) + dsize = parse_size(&geo, dsize_str); + if (lsize_str) + lsize = parse_size(&geo, lsize_str); + if (rsize_str) + rsize = parse_size(&geo, rsize_str); + if (geo.rtstart) { xfs_daddr_t rtstart = geo.rtstart * (geo.blocksize / BBSIZE); diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 index 2e329fa61758..d6e5fe13e943 100644 --- a/man/man8/xfs_growfs.8 +++ b/man/man8/xfs_growfs.8 @@ -57,6 +57,32 @@ The filesystem must be mounted to be grown (see .BR mount (8)). The existing contents of the filesystem are undisturbed, and the added space becomes available for additional file storage. +The following lists possible multiplication suffixes for any argument specifying +sizes. +.RS +.PD 0 +.HP +.BR s "\ \-\ multiply by sector size (default = 512, see " \-s +option below). +.HP +.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b +option below). +.HP +.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)." +.HP +.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)." +.HP +.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)." +.HP +.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)." +.HP +.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)." +.HP +.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)." +.PD +.RE +If no suffix is specified, the sizes are in file system blocks. +.RE .SH OPTIONS .TP .BI "\-d | \-D " size @@ -67,9 +93,8 @@ option is given, the data section is changed to that .IR size , otherwise the data section is grown to the largest size possible with the .B \-d -option. The size is expressed in filesystem blocks. A filesystem with only -1 AG cannot be shrunk further, and a filesystem cannot be shrunk to the point -where it would only have 1 AG. +option. A filesystem with only 1 AG cannot be shrunk further, and a +filesystem cannot be shrunk to the point where it would only have 1 AG. .B [NOTE: Only shrinking the last AG without removing it is implemented] .TP .B \-e @@ -90,8 +115,7 @@ shrunk, or moved. If the .I size option is given, the log section is changed to be that .IR size , -if possible. The size is expressed in filesystem blocks. -The size of an internal log must be smaller than the size +if possible. The size of an internal log must be smaller than the size of an allocation group (this value is printed at .BR mkfs (8) time). If neither @@ -124,9 +148,8 @@ Specifies that the real-time section of the filesystem should be grown. If the option is given, the real-time section is grown to that size, otherwise the real-time section is grown to the largest size possible with the .B \-r -option. The size is expressed in filesystem blocks. -The filesystem does not need to have contained a real-time section before -the +option. The filesystem does not need to have contained a real-time section +before the .B xfs_growfs operation. .TP -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-30 15:49 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-30 12:28 make the size options to xfs_growfs a bit more useful v2 Christoph Hellwig 2026-07-30 12:28 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig 2026-07-30 15:49 ` Darrick J. Wong 2026-07-30 12:28 ` [PATCH 2/2] growfs: clarify the man page a bit Christoph Hellwig 2026-07-30 15:44 ` Darrick J. Wong -- strict thread matches above, loose matches on Subject: below -- 2026-07-30 12:25 make the size options to xfs_growfs a bit more useful Christoph Hellwig 2026-07-30 12:25 ` [PATCH 1/2] growfs: support unit postfixes when specifying sizes Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox