@@ -94,6 +94,7 @@ enum {
N_SIZE = 0,
N_VERSION,
N_FTYPE,
+ N_DELATTR,
N_MAX_OPTS,
};
@@ -547,6 +548,7 @@ static struct opt_params nopts = {
[N_SIZE] = "size",
[N_VERSION] = "version",
[N_FTYPE] = "ftype",
+ [N_DELATTR] = "delattr",
},
.subopt_params = {
{ .index = N_SIZE,
@@ -569,6 +571,12 @@ static struct opt_params nopts = {
.maxval = 1,
.defaultval = 1,
},
+ { .index = N_DELATTR,
+ .conflicts = { { NULL, LAST_CONFLICT } },
+ .minval = 0,
+ .maxval = 1,
+ .defaultval = 1,
+ },
},
};
@@ -742,6 +750,7 @@ struct sb_feat_args {
bool reflink; /* XFS_SB_FEAT_RO_COMPAT_REFLINK */
bool nodalign;
bool nortalign;
+ bool delattr; /* XFS_SB_FEAT_INCOMPAT_LOG_DELATTR */
};
struct cli_params {
@@ -873,7 +882,7 @@ usage( void )
/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\
sunit=value|su=num,sectsize=num,lazy-count=0|1]\n\
/* label */ [-L label (maximum 12 characters)]\n\
-/* naming */ [-n size=num,version=2|ci,ftype=0|1]\n\
+/* naming */ [-n size=num,version=2|ci,ftype=0|1,delattr=0|1]\n\
/* no-op info only */ [-N]\n\
/* prototype file */ [-p fname]\n\
/* quiet */ [-q]\n\
@@ -1592,6 +1601,9 @@ naming_opts_parser(
case N_FTYPE:
cli->sb_feat.dirftype = getnum(value, opts, subopt);
break;
+ case N_DELATTR:
+ cli->sb_feat.delattr = getnum(value, &nopts, N_DELATTR);
+ break;
default:
return -EINVAL;
}
@@ -1988,6 +2000,14 @@ _("reflink not supported without CRC support\n"));
cli->sb_feat.reflink = false;
}
+ if ((cli->sb_feat.delattr) &&
+ cli->sb_feat.dir_version == 4) {
+ fprintf(stderr,
+_("delayed attributes not supported on v4 filesystems\n"));
+ usage();
+ cli->sb_feat.delattr = false;
+ }
+
if ((cli->fsx.fsx_xflags & FS_XFLAG_COWEXTSIZE) &&
!cli->sb_feat.reflink) {
fprintf(stderr,
@@ -2951,6 +2971,8 @@ sb_set_features(
sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_RMAPBT;
if (fp->reflink)
sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_REFLINK;
+ if (fp->delattr)
+ sbp->sb_features_log_incompat |= XFS_SB_FEAT_INCOMPAT_LOG_DELATTR;
/*
* Sparse inode chunk support has two main inode alignment requirements.
mkfs: enable feature bit in mkfs via the '-n delattr' parameter. Signed-off-by: Allison Collins <allison.henderson@oracle.com> --- mkfs/xfs_mkfs.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)