Message ID | 1528607272-11122-21-git-send-email-allison.henderson@oracle.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Sat, Jun 09, 2018 at 10:07:45PM -0700, Allison Henderson wrote: > mkfs: enable formatting with parent pointers > Enable parent pointer support in mkfs via the '-n parent' parameter. > > Signed-off-by: Allison Henderson <allison.henderson@oracle.com> > --- > mkfs/xfs_mkfs.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index 78d0ce5..b9a8b00 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -104,6 +104,7 @@ enum { > N_SIZE = 0, > N_VERSION, > N_FTYPE, > + N_PARENT, > N_MAX_OPTS, > }; > > @@ -550,6 +551,7 @@ struct opt_params nopts = { > [N_SIZE] = "size", > [N_VERSION] = "version", > [N_FTYPE] = "ftype", > + [N_PARENT] = "parent", > }, > .subopt_params = { > { .index = N_SIZE, > @@ -572,6 +574,12 @@ struct opt_params nopts = { > .maxval = 1, > .defaultval = 1, > }, > + { .index = N_PARENT, > + .conflicts = { { NULL, LAST_CONFLICT } }, > + .minval = 0, > + .maxval = 1, > + .defaultval = 1, > + }, > }, > }; > > @@ -876,7 +884,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,parent=0|1]\n\ > /* no-op info only */ [-N]\n\ > /* prototype file */ [-p fname]\n\ > /* quiet */ [-q]\n\ > @@ -1615,6 +1623,9 @@ naming_opts_parser( > case N_FTYPE: > cli->sb_feat.dirftype = getnum(value, opts, subopt); > break; > + case N_PARENT: > + cli->sb_feat.parent_pointers = getnum(value, &nopts, N_PARENT); > + break; > default: > return -EINVAL; > } validate_sb_features() needs to disallow parent pointers on v4 filesystems. See "reflink not supported without CRC support" around xfs_mkfs.c line 2015. --D > @@ -2887,6 +2898,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->parent_pointers) > + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_PARENT; > > /* > * Sparse inode chunk support has two main inode alignment requirements. > -- > 2.7.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/11/2018 10:43 AM, Darrick J. Wong wrote: > On Sat, Jun 09, 2018 at 10:07:45PM -0700, Allison Henderson wrote: >> mkfs: enable formatting with parent pointers >> Enable parent pointer support in mkfs via the '-n parent' parameter. >> >> Signed-off-by: Allison Henderson <allison.henderson@oracle.com> >> --- >> mkfs/xfs_mkfs.c | 15 ++++++++++++++- >> 1 file changed, 14 insertions(+), 1 deletion(-) >> >> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c >> index 78d0ce5..b9a8b00 100644 >> --- a/mkfs/xfs_mkfs.c >> +++ b/mkfs/xfs_mkfs.c >> @@ -104,6 +104,7 @@ enum { >> N_SIZE = 0, >> N_VERSION, >> N_FTYPE, >> + N_PARENT, >> N_MAX_OPTS, >> }; >> >> @@ -550,6 +551,7 @@ struct opt_params nopts = { >> [N_SIZE] = "size", >> [N_VERSION] = "version", >> [N_FTYPE] = "ftype", >> + [N_PARENT] = "parent", >> }, >> .subopt_params = { >> { .index = N_SIZE, >> @@ -572,6 +574,12 @@ struct opt_params nopts = { >> .maxval = 1, >> .defaultval = 1, >> }, >> + { .index = N_PARENT, >> + .conflicts = { { NULL, LAST_CONFLICT } }, >> + .minval = 0, >> + .maxval = 1, >> + .defaultval = 1, >> + }, >> }, >> }; >> >> @@ -876,7 +884,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,parent=0|1]\n\ >> /* no-op info only */ [-N]\n\ >> /* prototype file */ [-p fname]\n\ >> /* quiet */ [-q]\n\ >> @@ -1615,6 +1623,9 @@ naming_opts_parser( >> case N_FTYPE: >> cli->sb_feat.dirftype = getnum(value, opts, subopt); >> break; >> + case N_PARENT: >> + cli->sb_feat.parent_pointers = getnum(value, &nopts, N_PARENT); >> + break; >> default: >> return -EINVAL; >> } > > validate_sb_features() needs to disallow parent pointers on v4 > filesystems. See "reflink not supported without CRC support" around > xfs_mkfs.c line 2015. > > --D Ok, I will add a check for that. Thx! Allison > >> @@ -2887,6 +2898,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->parent_pointers) >> + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_PARENT; >> >> /* >> * Sparse inode chunk support has two main inode alignment requirements. >> -- >> 2.7.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 78d0ce5..b9a8b00 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -104,6 +104,7 @@ enum { N_SIZE = 0, N_VERSION, N_FTYPE, + N_PARENT, N_MAX_OPTS, }; @@ -550,6 +551,7 @@ struct opt_params nopts = { [N_SIZE] = "size", [N_VERSION] = "version", [N_FTYPE] = "ftype", + [N_PARENT] = "parent", }, .subopt_params = { { .index = N_SIZE, @@ -572,6 +574,12 @@ struct opt_params nopts = { .maxval = 1, .defaultval = 1, }, + { .index = N_PARENT, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + }, }, }; @@ -876,7 +884,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,parent=0|1]\n\ /* no-op info only */ [-N]\n\ /* prototype file */ [-p fname]\n\ /* quiet */ [-q]\n\ @@ -1615,6 +1623,9 @@ naming_opts_parser( case N_FTYPE: cli->sb_feat.dirftype = getnum(value, opts, subopt); break; + case N_PARENT: + cli->sb_feat.parent_pointers = getnum(value, &nopts, N_PARENT); + break; default: return -EINVAL; } @@ -2887,6 +2898,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->parent_pointers) + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_PARENT; /* * Sparse inode chunk support has two main inode alignment requirements.
mkfs: enable formatting with parent pointers Enable parent pointer support in mkfs via the '-n parent' parameter. Signed-off-by: Allison Henderson <allison.henderson@oracle.com> --- mkfs/xfs_mkfs.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)