]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
mkfs: don't pass on extent size inherit flags when extent size is zero
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 20 Nov 2020 22:03:28 +0000 (17:03 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Fri, 20 Nov 2020 22:03:28 +0000 (17:03 -0500)
If the caller passes in an extent size hint of zero, clear the inherit
flags because a hint value of zero is treated as not a hint.

Otherwise, you get stupid stuff like:
$ mkfs.xfs -d cowextsize=0 /tmp/a.img -f
illegal CoW extent size hint 0, must be less than 9600.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
mkfs/xfs_mkfs.c

index 4cb79b695921c527eb91b88c31d6a89b9fe5db22..bad92f2ba3c2fd7c90d3208b3de918dcd7999243 100644 (file)
@@ -1457,11 +1457,17 @@ data_opts_parser(
                break;
        case D_EXTSZINHERIT:
                cli->fsx.fsx_extsize = getnum(value, opts, subopt);
-               cli->fsx.fsx_xflags |= FS_XFLAG_EXTSZINHERIT;
+               if (cli->fsx.fsx_extsize)
+                       cli->fsx.fsx_xflags |= FS_XFLAG_EXTSZINHERIT;
+               else
+                       cli->fsx.fsx_xflags &= ~FS_XFLAG_EXTSZINHERIT;
                break;
        case D_COWEXTSIZE:
                cli->fsx.fsx_cowextsize = getnum(value, opts, subopt);
-               cli->fsx.fsx_xflags |= FS_XFLAG_COWEXTSIZE;
+               if (cli->fsx.fsx_cowextsize)
+                       cli->fsx.fsx_xflags |= FS_XFLAG_COWEXTSIZE;
+               else
+                       cli->fsx.fsx_xflags &= ~FS_XFLAG_COWEXTSIZE;
                break;
        case D_DAXINHERIT:
                if (getnum(value, opts, subopt))