diff mbox series

[v2] xfs_growfs: support shrinking unused space

Message ID 20210326024631.12921-1-hsiangkao@aol.com (mailing list archive)
State Accepted
Headers show
Series [v2] xfs_growfs: support shrinking unused space | expand

Commit Message

Gao Xiang March 26, 2021, 2:46 a.m. UTC
From: Gao Xiang <hsiangkao@redhat.com>

This allows shrinking operation can pass into kernel. Currently,
only shrinking unused space in the tail AG functionality works.

Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
---
v1: https://lore.kernel.org/r/20201028114010.545331-1-hsiangkao@redhat.com
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(-)

Comments

Darrick J. Wong March 26, 2021, 2:49 a.m. UTC | #1
On Fri, Mar 26, 2021 at 10:46:31AM +0800, Gao Xiang wrote:
> From: Gao Xiang <hsiangkao@redhat.com>
> 
> This allows shrinking operation can pass into kernel. Currently,
> only shrinking unused space in the tail AG functionality works.
> 
> Signed-off-by: Gao Xiang <hsiangkao@redhat.com>

Looks like a reasonable start,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
> v1: https://lore.kernel.org/r/20201028114010.545331-1-hsiangkao@redhat.com
> 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
>
diff mbox series

Patch

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