]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_growfs: don't grow data if only -m is specified
authorEric Sandeen <sandeen@redhat.com>
Mon, 3 Mar 2014 01:29:32 +0000 (12:29 +1100)
committerDave Chinner <david@fromorbit.com>
Mon, 3 Mar 2014 01:29:32 +0000 (12:29 +1100)
While writing an xfstest to check imaxpct behavior, I realized
that xfs_growfs -m XXX /mnt/point will not only change
imaxpct, but also grow the filesystem if it's not currently
occupying the entire block device.  This doesn't seem like
the expected behavior, so split it out such that if only
-m, and not -d, is specified, only the imaxpct will be
changed.

This is a change from previous behavior, but I think it
satisfies the principle of least surprise...

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
growfs/xfs_growfs.c

index 2df68fb852f6db84f3992190fd5a79703f16119c..fb7eda8b139605de9b91c1e34c3eb688c0e2dfc3 100644 (file)
@@ -189,7 +189,7 @@ main(int argc, char **argv)
                usage();
        if (iflag && xflag)
                usage();
-       if (dflag + lflag + rflag == 0)
+       if (dflag + lflag + rflag + mflag == 0)
                aflag = 1;
 
        fs_table_initialise(0, NULL, 0, NULL);
@@ -305,12 +305,15 @@ main(int argc, char **argv)
        drsize -= (drsize % 2);
 
        error = 0;
-       if (dflag | aflag) {
+
+       if (dflag | mflag | aflag) {
                xfs_growfs_data_t       in;
 
                if (!mflag)
                        maxpct = geo.imaxpct;
-               if (!dsize)
+               if (!dflag && !aflag)   /* Only mflag, no data size change */
+                       dsize = geo.datablocks;
+               else if (!dsize)
                        dsize = ddsize / (geo.blocksize / BBSIZE);
                else if (dsize > ddsize / (geo.blocksize / BBSIZE)) {
                        fprintf(stderr, _(