Re: [PATCH v2] xfs_growfs: support shrinking unused space
From: "Darrick J. Wong" <djwong@kernel.org>
Date: 2021-03-26 02:50:33
On Fri, Mar 26, 2021 at 10:46:31AM +0800, Gao Xiang wrote:
From: Gao Xiang <redacted> This allows shrinking operation can pass into kernel. Currently, only shrinking unused space in the tail AG functionality works. Signed-off-by: Gao Xiang <redacted>
Looks like a reasonable start, Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D
quoted hunk ↗ jump to hunk
--- v1: https://lore.kernel.org/r/20201028114010.545331-1-hsiangkao@redhat.com (local) change since v1: - update manpage description (Darrick); growfs/xfs_growfs.c | 9 ++++----- man/man8/xfs_growfs.8 | 8 +++++--- 2 files changed, 9 insertions(+), 8 deletions(-)diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c index a68b515de40d..d45ba703cc6f 100644 --- a/growfs/xfs_growfs.c +++ b/growfs/xfs_growfs.c@@ -246,12 +246,11 @@ main(int argc, char **argv) error = 1; } - if (!error && dsize < geo.datablocks) { - fprintf(stderr, _("data size %lld too small," - " old size is %lld\n"), + if (!error && dsize < geo.datablocks) + fprintf(stderr, +_("[EXPERIMENTAL] try to shrink unused space %lld, old size is %lld\n"), (long long)dsize, (long long)geo.datablocks); - error = 1; - } else if (!error && + if (!error && dsize == geo.datablocks && maxpct == geo.imaxpct) { if (dflag) fprintf(stderr, _(diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 index 60a88189dd88..a01269270580 100644 --- a/man/man8/xfs_growfs.8 +++ b/man/man8/xfs_growfs.8@@ -60,14 +60,16 @@ becomes available for additional file storage. .SH OPTIONS .TP .BI "\-d | \-D " size -Specifies that the data section of the filesystem should be grown. If the +Specifies that the data section of the filesystem should be resized. If the .B \-D .I size -option is given, the data section is grown to that +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. +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. .TP .B \-e Allows the real-time extent size to be specified. In-- 2.20.1