From: Darrick J. Wong Date: Mon, 17 Aug 2020 21:20:17 +0000 (-0400) Subject: mkfs: allow setting dax flag on root directory X-Git-Tag: v5.8.0-rc1~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=64989ff385e55fd959c58074739bb00617c891df;p=thirdparty%2Fxfsprogs-dev.git mkfs: allow setting dax flag on root directory Teach mkfs to set the DAX flag on the root directory so that all new files can be created in dax mode. This is a complement to removing the mount option. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Reviewed-by: Carlos Maiolino Signed-off-by: Eric Sandeen --- diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 index 7d3f3552f..0a7858748 100644 --- a/man/man8/mkfs.xfs.8 +++ b/man/man8/mkfs.xfs.8 @@ -398,6 +398,16 @@ will have this extent size hint applied. The value must be provided in units of filesystem blocks. Directories will pass on this hint to newly created regular files and directories. +.TP +.BI daxinherit= value +If set, all inodes created by +.B mkfs.xfs +will be created with the DAX flag set. +Directories will pass on this flag to newly created regular files and +directories. +By default, +.B mkfs.xfs +will not enable DAX mode. .RE .TP .B \-f diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 2e6cd280e..a687f385a 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -60,6 +60,7 @@ enum { D_PROJINHERIT, D_EXTSZINHERIT, D_COWEXTSIZE, + D_DAXINHERIT, D_MAX_OPTS, }; @@ -254,6 +255,7 @@ static struct opt_params dopts = { [D_PROJINHERIT] = "projinherit", [D_EXTSZINHERIT] = "extszinherit", [D_COWEXTSIZE] = "cowextsize", + [D_DAXINHERIT] = "daxinherit", }, .subopt_params = { { .index = D_AGCOUNT, @@ -369,6 +371,12 @@ static struct opt_params dopts = { .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, + { .index = D_DAXINHERIT, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + }, }, }; @@ -1434,6 +1442,12 @@ data_opts_parser( cli->fsx.fsx_cowextsize = getnum(value, opts, subopt); cli->fsx.fsx_xflags |= FS_XFLAG_COWEXTSIZE; break; + case D_DAXINHERIT: + if (getnum(value, opts, subopt)) + cli->fsx.fsx_xflags |= FS_XFLAG_DAX; + else + cli->fsx.fsx_xflags &= ~FS_XFLAG_DAX; + break; default: return -EINVAL; }