Message ID | 1481117249-21273-4-git-send-email-jtulak@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Wed, Dec 07, 2016 at 02:27:10PM +0100, Jan Tulak wrote: > Add a new field int opt_params - value, which is filled with user input. > > Signed-off-by: Jan Tulak <jtulak@redhat.com> Despite a very minor whitespace issue... Reviewed-by: Bill O'Donnell <billodo@redhat.com> > --- > mkfs/xfs_mkfs.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 132 insertions(+) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index 372c620..edcfdc0 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -115,6 +115,12 @@ unsigned int sectorsize; > * sets what is used with simple specifying the subopt (-d file). > * A special SUBOPT_NEEDS_VAL can be used to require a user-given > * value in any case. > + * > + * value INTERNAL > + * Do not set this on initialization. Use defaultval for what you want > + * to do. This is filled with user input and anything you write here now > + * is overwritten. (If the user input is a string and not a number, this > + * value is set to a positive non-zero number.) > */ > struct opt_params { > int index; > @@ -131,6 +137,7 @@ struct opt_params { > long long minval; > long long maxval; > long long defaultval; > + long long value; > } subopt_params[MAX_SUBOPTS]; > } opts[MAX_OPTS] = { > #define OPT_B 0 > @@ -1566,12 +1573,20 @@ main( > B_LOG); > blocksize = 1 << blocklog; > blflag = 1; > + opts[OPT_B].subopt_params[B_LOG].value = > + blocklog; > + opts[OPT_B].subopt_params[B_SIZE].value = > + blocksize; > break; > case B_SIZE: > blocksize = getnum(value, &opts[OPT_B], > B_SIZE); > blocklog = libxfs_highbit32(blocksize); > bsflag = 1; > + opts[OPT_B].subopt_params[B_LOG].value = > + blocklog; > + opts[OPT_B].subopt_params[B_SIZE].value = > + blocksize; > break; > default: > unknown('b', value); > @@ -1589,47 +1604,70 @@ main( > agcount = getnum(value, &opts[OPT_D], > D_AGCOUNT); > daflag = 1; > + opts[OPT_D].subopt_params[D_AGCOUNT].value = > + agcount; > break; > case D_AGSIZE: > agsize = getnum(value, &opts[OPT_D], > D_AGSIZE); > dasize = 1; > + opts[OPT_D].subopt_params[D_AGSIZE].value = > + agsize; > break; > case D_FILE: > xi.disfile = getnum(value, &opts[OPT_D], > D_FILE); > + opts[OPT_D].subopt_params[D_FILE].value = > + xi.disfile; > break; > case D_NAME: > xi.dname = getstr(value, &opts[OPT_D], > D_NAME); > + opts[OPT_D].subopt_params[D_NAME].value = 1; > break; > case D_SIZE: > dbytes = getnum(value, &opts[OPT_D], > D_SIZE); > + opts[OPT_D].subopt_params[D_SIZE].value = > + dbytes; > break; > case D_SUNIT: > dsunit = getnum(value, &opts[OPT_D], > D_SUNIT); > + opts[OPT_D].subopt_params[D_SUNIT].value = > + dsunit; > break; > case D_SWIDTH: > dswidth = getnum(value, &opts[OPT_D], > D_SWIDTH); > + opts[OPT_D].subopt_params[D_SWIDTH].value = > + dswidth; > break; > case D_SU: > dsu = getnum(value, &opts[OPT_D], D_SU); > + opts[OPT_D].subopt_params[D_SU].value = > + dsu; > break; > case D_SW: > dsw = getnum(value, &opts[OPT_D], D_SW); > + opts[OPT_D].subopt_params[D_SW].value = > + dsw; > break; > case D_NOALIGN: > nodsflag = getnum(value, &opts[OPT_D], > D_NOALIGN); > + opts[OPT_D].subopt_params[D_NOALIGN].value = > + nodsflag; > break; > case D_SECTLOG: > sectorlog = getnum(value, &opts[OPT_D], > D_SECTLOG); > sectorsize = 1 << sectorlog; > slflag = 1; > + opts[OPT_D].subopt_params[D_SECTSIZE].value = > + sectorsize; > + opts[OPT_D].subopt_params[D_SECTLOG].value = > + sectorlog; > break; > case D_SECTSIZE: > sectorsize = getnum(value, &opts[OPT_D], > @@ -1637,6 +1675,10 @@ main( > sectorlog = > libxfs_highbit32(sectorsize); > ssflag = 1; > + opts[OPT_D].subopt_params[D_SECTSIZE].value = > + sectorsize; > + opts[OPT_D].subopt_params[D_SECTLOG].value = > + sectorlog; > break; > case D_RTINHERIT: > c = getnum(value, &opts[OPT_D], > @@ -1644,18 +1686,24 @@ main( > if (c) > fsx.fsx_xflags |= > XFS_DIFLAG_RTINHERIT; > + opts[OPT_D].subopt_params[D_RTINHERIT].value = > + c; > break; > case D_PROJINHERIT: > fsx.fsx_projid = getnum(value, &opts[OPT_D], > D_PROJINHERIT); > fsx.fsx_xflags |= > XFS_DIFLAG_PROJINHERIT; > + opts[OPT_D].subopt_params[D_PROJINHERIT].value = > + fsx.fsx_projid; > break; > case D_EXTSZINHERIT: > fsx.fsx_extsize = getnum(value, &opts[OPT_D], > D_EXTSZINHERIT); > fsx.fsx_xflags |= > XFS_DIFLAG_EXTSZINHERIT; > + opts[OPT_D].subopt_params[D_EXTSZINHERIT].value = > + fsx.fsx_extsize; > break; > default: > unknown('d', value); > @@ -1673,43 +1721,64 @@ main( > sb_feat.inode_align = getnum(value, > &opts[OPT_I], > I_ALIGN); > + opts[OPT_I].subopt_params[I_ALIGN].value = > + sb_feat.inode_align; > break; > case I_LOG: > inodelog = getnum(value, &opts[OPT_I], > I_LOG); > isize = 1 << inodelog; > ilflag = 1; > + opts[OPT_I].subopt_params[I_SIZE].value = > + isize; > + opts[OPT_I].subopt_params[I_LOG].value = > + inodelog; > break; > case I_MAXPCT: > imaxpct = getnum(value, &opts[OPT_I], > I_MAXPCT); > imflag = 1; > + opts[OPT_I].subopt_params[I_MAXPCT].value = > + imaxpct; > break; > case I_PERBLOCK: > inopblock = getnum(value, &opts[OPT_I], > I_PERBLOCK); > ipflag = 1; > + opts[OPT_I].subopt_params[I_PERBLOCK].value = > + inopblock; > break; > case I_SIZE: > isize = getnum(value, &opts[OPT_I], > I_SIZE); > inodelog = libxfs_highbit32(isize); > isflag = 1; > + opts[OPT_I].subopt_params[I_SIZE].value = > + isize; > + opts[OPT_I].subopt_params[I_LOG].value = > + inodelog; > break; > case I_ATTR: > sb_feat.attr_version = > + > getnum(value, &opts[OPT_I], > I_ATTR); > + opts[OPT_I].subopt_params[I_ATTR].value = > + sb_feat.attr_version; > break; > case I_PROJID32BIT: > sb_feat.projid16bit = > !getnum(value, &opts[OPT_I], > I_PROJID32BIT); > + opts[OPT_I].subopt_params[I_PROJID32BIT].value = > + sb_feat.projid16bit; > break; > case I_SPINODES: > sb_feat.spinodes = getnum(value, > &opts[OPT_I], > I_SPINODES); > + opts[OPT_I].subopt_params[I_SPINODES].value = > + sb_feat.spinodes; > break; > default: > unknown('i', value); > @@ -1727,24 +1796,34 @@ main( > logagno = getnum(value, &opts[OPT_L], > L_AGNUM); > laflag = 1; > + opts[OPT_L].subopt_params[L_AGNUM].value = > + logagno; > break; > case L_FILE: > xi.lisfile = getnum(value, &opts[OPT_L], > L_FILE); > + opts[OPT_L].subopt_params[L_FILE].value = > + xi.lisfile; > break; > case L_INTERNAL: > loginternal = getnum(value, &opts[OPT_L], > L_INTERNAL); > liflag = 1; > + opts[OPT_L].subopt_params[L_INTERNAL].value = > + loginternal; > break; > case L_SU: > lsu = getnum(value, &opts[OPT_L], L_SU); > lsuflag = 1; > + opts[OPT_L].subopt_params[L_SU].value = > + lsu; > break; > case L_SUNIT: > lsunit = getnum(value, &opts[OPT_L], > L_SUNIT); > lsunitflag = 1; > + opts[OPT_L].subopt_params[L_SUNIT].value = > + lsunit; > break; > case L_NAME: > case L_DEV: > @@ -1753,22 +1832,32 @@ main( > xi.logname = logfile; > ldflag = 1; > loginternal = 0; > + opts[OPT_L].subopt_params[L_NAME].value = 1; > + opts[OPT_L].subopt_params[L_DEV].value = 1; > break; > case L_VERSION: > sb_feat.log_version = > getnum(value, &opts[OPT_L], > L_VERSION); > lvflag = 1; > + opts[OPT_L].subopt_params[L_VERSION].value = > + sb_feat.log_version; > break; > case L_SIZE: > logbytes = getnum(value, &opts[OPT_L], > L_SIZE); > + opts[OPT_L].subopt_params[L_SIZE].value = > + logbytes; > break; > case L_SECTLOG: > lsectorlog = getnum(value, &opts[OPT_L], > L_SECTLOG); > lsectorsize = 1 << lsectorlog; > lslflag = 1; > + opts[OPT_L].subopt_params[L_SECTSIZE].value = > + lsectorsize; > + opts[OPT_L].subopt_params[L_SECTLOG].value = > + lsectorlog; > break; > case L_SECTSIZE: > lsectorsize = getnum(value, &opts[OPT_L], > @@ -1776,11 +1865,17 @@ main( > lsectorlog = > libxfs_highbit32(lsectorsize); > lssflag = 1; > + opts[OPT_L].subopt_params[L_SECTSIZE].value = > + lsectorsize; > + opts[OPT_L].subopt_params[L_SECTLOG].value = > + lsectorlog; > break; > case L_LAZYSBCNTR: > sb_feat.lazy_sb_counters = > getnum(value, &opts[OPT_L], > L_LAZYSBCNTR); > + opts[OPT_L].subopt_params[L_LAZYSBCNTR].value = > + sb_feat.lazy_sb_counters; > break; > default: > unknown('l', value); > @@ -1805,20 +1900,27 @@ main( > M_CRC); > if (sb_feat.crcs_enabled) > sb_feat.dirftype = true; > + opts[OPT_M].subopt_params[M_CRC].value = > + sb_feat.crcs_enabled; > break; > case M_FINOBT: > sb_feat.finobt = getnum( > value, &opts[OPT_M], M_FINOBT); > + opts[OPT_M].subopt_params[M_FINOBT].value = > + sb_feat.finobt; > break; > case M_UUID: > if (!value || *value == '\0') > reqval('m', subopts, M_UUID); > if (platform_uuid_parse(value, &uuid)) > illegal(optarg, "m uuid"); > + opts[OPT_M].subopt_params[M_UUID].value = 1; > break; > case M_RMAPBT: > sb_feat.rmapbt = getnum( > value, &opts[OPT_M], M_RMAPBT); > + opts[OPT_M].subopt_params[M_RMAPBT].value = trailing whitespace above ^^^ > + sb_feat.rmapbt; > break; > case M_REFLINK: > sb_feat.reflink = getnum( > @@ -1841,6 +1943,10 @@ main( > N_LOG); > dirblocksize = 1 << dirblocklog; > nlflag = 1; > + opts[OPT_N].subopt_params[N_SIZE].value = > + dirblocksize; > + opts[OPT_N].subopt_params[N_LOG].value = > + dirblocklog; > break; > case N_SIZE: > dirblocksize = getnum(value, &opts[OPT_N], > @@ -1848,6 +1954,10 @@ main( > dirblocklog = > libxfs_highbit32(dirblocksize); > nsflag = 1; > + opts[OPT_N].subopt_params[N_SIZE].value = > + dirblocksize; > + opts[OPT_N].subopt_params[N_LOG].value = > + dirblocklog; > break; > case N_VERSION: > value = getstr(value, &opts[OPT_N], > @@ -1861,10 +1971,14 @@ main( > N_VERSION); > } > nvflag = 1; > + opts[OPT_N].subopt_params[N_VERSION].value = > + sb_feat.dir_version; > break; > case N_FTYPE: > sb_feat.dirftype = getnum(value, &opts[OPT_N], > N_FTYPE); > + opts[OPT_N].subopt_params[N_FTYPE].value = > + sb_feat.dirftype; > break; > default: > unknown('n', value); > @@ -1895,23 +2009,33 @@ main( > case R_EXTSIZE: > rtextbytes = getnum(value, &opts[OPT_R], > R_EXTSIZE); > + opts[OPT_R].subopt_params[R_EXTSIZE].value = > + rtextbytes; > break; > case R_FILE: > xi.risfile = getnum(value, &opts[OPT_R], > R_FILE); > + opts[OPT_R].subopt_params[R_FILE].value = > + xi.risfile; > break; > case R_NAME: > case R_DEV: > xi.rtname = getstr(value, &opts[OPT_R], > R_NAME); > + opts[OPT_R].subopt_params[R_NAME].value = 1; > + opts[OPT_R].subopt_params[R_DEV].value = 1; > break; > case R_SIZE: > rtbytes = getnum(value, &opts[OPT_R], > R_SIZE); > + opts[OPT_R].subopt_params[R_SIZE].value = > + rtbytes; > break; > case R_NOALIGN: > norsflag = getnum(value, &opts[OPT_R], > R_NOALIGN); > + opts[OPT_R].subopt_params[R_NOALIGN].value = > + norsflag; > break; > default: > unknown('r', value); > @@ -1936,6 +2060,10 @@ main( > sectorsize = 1 << sectorlog; > lsectorsize = sectorsize; > lslflag = slflag = 1; > + opts[OPT_S].subopt_params[S_LOG].value = > + sectorsize; > + opts[OPT_S].subopt_params[S_SECTLOG].value = > + sectorsize; > break; > case S_SIZE: > case S_SECTSIZE: > @@ -1949,6 +2077,10 @@ main( > libxfs_highbit32(sectorsize); > lsectorlog = sectorlog; > lssflag = ssflag = 1; > + opts[OPT_S].subopt_params[S_SIZE].value = > + sectorlog; > + opts[OPT_S].subopt_params[S_SECTSIZE].value = > + sectorlog; > break; > default: > unknown('s', value); > -- > 2.8.1 > > -- > 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 Fri, Jan 13, 2017 at 5:55 PM, Bill O'Donnell <billodo@redhat.com> wrote: > On Wed, Dec 07, 2016 at 02:27:10PM +0100, Jan Tulak wrote: >> Add a new field int opt_params - value, which is filled with user input. >> >> Signed-off-by: Jan Tulak <jtulak@redhat.com> > > Despite a very minor whitespace issue... > > Reviewed-by: Bill O'Donnell <billodo@redhat.com> > Whitespace fixed. Thanks for the review. :-)
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 372c620..edcfdc0 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -115,6 +115,12 @@ unsigned int sectorsize; * sets what is used with simple specifying the subopt (-d file). * A special SUBOPT_NEEDS_VAL can be used to require a user-given * value in any case. + * + * value INTERNAL + * Do not set this on initialization. Use defaultval for what you want + * to do. This is filled with user input and anything you write here now + * is overwritten. (If the user input is a string and not a number, this + * value is set to a positive non-zero number.) */ struct opt_params { int index; @@ -131,6 +137,7 @@ struct opt_params { long long minval; long long maxval; long long defaultval; + long long value; } subopt_params[MAX_SUBOPTS]; } opts[MAX_OPTS] = { #define OPT_B 0 @@ -1566,12 +1573,20 @@ main( B_LOG); blocksize = 1 << blocklog; blflag = 1; + opts[OPT_B].subopt_params[B_LOG].value = + blocklog; + opts[OPT_B].subopt_params[B_SIZE].value = + blocksize; break; case B_SIZE: blocksize = getnum(value, &opts[OPT_B], B_SIZE); blocklog = libxfs_highbit32(blocksize); bsflag = 1; + opts[OPT_B].subopt_params[B_LOG].value = + blocklog; + opts[OPT_B].subopt_params[B_SIZE].value = + blocksize; break; default: unknown('b', value); @@ -1589,47 +1604,70 @@ main( agcount = getnum(value, &opts[OPT_D], D_AGCOUNT); daflag = 1; + opts[OPT_D].subopt_params[D_AGCOUNT].value = + agcount; break; case D_AGSIZE: agsize = getnum(value, &opts[OPT_D], D_AGSIZE); dasize = 1; + opts[OPT_D].subopt_params[D_AGSIZE].value = + agsize; break; case D_FILE: xi.disfile = getnum(value, &opts[OPT_D], D_FILE); + opts[OPT_D].subopt_params[D_FILE].value = + xi.disfile; break; case D_NAME: xi.dname = getstr(value, &opts[OPT_D], D_NAME); + opts[OPT_D].subopt_params[D_NAME].value = 1; break; case D_SIZE: dbytes = getnum(value, &opts[OPT_D], D_SIZE); + opts[OPT_D].subopt_params[D_SIZE].value = + dbytes; break; case D_SUNIT: dsunit = getnum(value, &opts[OPT_D], D_SUNIT); + opts[OPT_D].subopt_params[D_SUNIT].value = + dsunit; break; case D_SWIDTH: dswidth = getnum(value, &opts[OPT_D], D_SWIDTH); + opts[OPT_D].subopt_params[D_SWIDTH].value = + dswidth; break; case D_SU: dsu = getnum(value, &opts[OPT_D], D_SU); + opts[OPT_D].subopt_params[D_SU].value = + dsu; break; case D_SW: dsw = getnum(value, &opts[OPT_D], D_SW); + opts[OPT_D].subopt_params[D_SW].value = + dsw; break; case D_NOALIGN: nodsflag = getnum(value, &opts[OPT_D], D_NOALIGN); + opts[OPT_D].subopt_params[D_NOALIGN].value = + nodsflag; break; case D_SECTLOG: sectorlog = getnum(value, &opts[OPT_D], D_SECTLOG); sectorsize = 1 << sectorlog; slflag = 1; + opts[OPT_D].subopt_params[D_SECTSIZE].value = + sectorsize; + opts[OPT_D].subopt_params[D_SECTLOG].value = + sectorlog; break; case D_SECTSIZE: sectorsize = getnum(value, &opts[OPT_D], @@ -1637,6 +1675,10 @@ main( sectorlog = libxfs_highbit32(sectorsize); ssflag = 1; + opts[OPT_D].subopt_params[D_SECTSIZE].value = + sectorsize; + opts[OPT_D].subopt_params[D_SECTLOG].value = + sectorlog; break; case D_RTINHERIT: c = getnum(value, &opts[OPT_D], @@ -1644,18 +1686,24 @@ main( if (c) fsx.fsx_xflags |= XFS_DIFLAG_RTINHERIT; + opts[OPT_D].subopt_params[D_RTINHERIT].value = + c; break; case D_PROJINHERIT: fsx.fsx_projid = getnum(value, &opts[OPT_D], D_PROJINHERIT); fsx.fsx_xflags |= XFS_DIFLAG_PROJINHERIT; + opts[OPT_D].subopt_params[D_PROJINHERIT].value = + fsx.fsx_projid; break; case D_EXTSZINHERIT: fsx.fsx_extsize = getnum(value, &opts[OPT_D], D_EXTSZINHERIT); fsx.fsx_xflags |= XFS_DIFLAG_EXTSZINHERIT; + opts[OPT_D].subopt_params[D_EXTSZINHERIT].value = + fsx.fsx_extsize; break; default: unknown('d', value); @@ -1673,43 +1721,64 @@ main( sb_feat.inode_align = getnum(value, &opts[OPT_I], I_ALIGN); + opts[OPT_I].subopt_params[I_ALIGN].value = + sb_feat.inode_align; break; case I_LOG: inodelog = getnum(value, &opts[OPT_I], I_LOG); isize = 1 << inodelog; ilflag = 1; + opts[OPT_I].subopt_params[I_SIZE].value = + isize; + opts[OPT_I].subopt_params[I_LOG].value = + inodelog; break; case I_MAXPCT: imaxpct = getnum(value, &opts[OPT_I], I_MAXPCT); imflag = 1; + opts[OPT_I].subopt_params[I_MAXPCT].value = + imaxpct; break; case I_PERBLOCK: inopblock = getnum(value, &opts[OPT_I], I_PERBLOCK); ipflag = 1; + opts[OPT_I].subopt_params[I_PERBLOCK].value = + inopblock; break; case I_SIZE: isize = getnum(value, &opts[OPT_I], I_SIZE); inodelog = libxfs_highbit32(isize); isflag = 1; + opts[OPT_I].subopt_params[I_SIZE].value = + isize; + opts[OPT_I].subopt_params[I_LOG].value = + inodelog; break; case I_ATTR: sb_feat.attr_version = + getnum(value, &opts[OPT_I], I_ATTR); + opts[OPT_I].subopt_params[I_ATTR].value = + sb_feat.attr_version; break; case I_PROJID32BIT: sb_feat.projid16bit = !getnum(value, &opts[OPT_I], I_PROJID32BIT); + opts[OPT_I].subopt_params[I_PROJID32BIT].value = + sb_feat.projid16bit; break; case I_SPINODES: sb_feat.spinodes = getnum(value, &opts[OPT_I], I_SPINODES); + opts[OPT_I].subopt_params[I_SPINODES].value = + sb_feat.spinodes; break; default: unknown('i', value); @@ -1727,24 +1796,34 @@ main( logagno = getnum(value, &opts[OPT_L], L_AGNUM); laflag = 1; + opts[OPT_L].subopt_params[L_AGNUM].value = + logagno; break; case L_FILE: xi.lisfile = getnum(value, &opts[OPT_L], L_FILE); + opts[OPT_L].subopt_params[L_FILE].value = + xi.lisfile; break; case L_INTERNAL: loginternal = getnum(value, &opts[OPT_L], L_INTERNAL); liflag = 1; + opts[OPT_L].subopt_params[L_INTERNAL].value = + loginternal; break; case L_SU: lsu = getnum(value, &opts[OPT_L], L_SU); lsuflag = 1; + opts[OPT_L].subopt_params[L_SU].value = + lsu; break; case L_SUNIT: lsunit = getnum(value, &opts[OPT_L], L_SUNIT); lsunitflag = 1; + opts[OPT_L].subopt_params[L_SUNIT].value = + lsunit; break; case L_NAME: case L_DEV: @@ -1753,22 +1832,32 @@ main( xi.logname = logfile; ldflag = 1; loginternal = 0; + opts[OPT_L].subopt_params[L_NAME].value = 1; + opts[OPT_L].subopt_params[L_DEV].value = 1; break; case L_VERSION: sb_feat.log_version = getnum(value, &opts[OPT_L], L_VERSION); lvflag = 1; + opts[OPT_L].subopt_params[L_VERSION].value = + sb_feat.log_version; break; case L_SIZE: logbytes = getnum(value, &opts[OPT_L], L_SIZE); + opts[OPT_L].subopt_params[L_SIZE].value = + logbytes; break; case L_SECTLOG: lsectorlog = getnum(value, &opts[OPT_L], L_SECTLOG); lsectorsize = 1 << lsectorlog; lslflag = 1; + opts[OPT_L].subopt_params[L_SECTSIZE].value = + lsectorsize; + opts[OPT_L].subopt_params[L_SECTLOG].value = + lsectorlog; break; case L_SECTSIZE: lsectorsize = getnum(value, &opts[OPT_L], @@ -1776,11 +1865,17 @@ main( lsectorlog = libxfs_highbit32(lsectorsize); lssflag = 1; + opts[OPT_L].subopt_params[L_SECTSIZE].value = + lsectorsize; + opts[OPT_L].subopt_params[L_SECTLOG].value = + lsectorlog; break; case L_LAZYSBCNTR: sb_feat.lazy_sb_counters = getnum(value, &opts[OPT_L], L_LAZYSBCNTR); + opts[OPT_L].subopt_params[L_LAZYSBCNTR].value = + sb_feat.lazy_sb_counters; break; default: unknown('l', value); @@ -1805,20 +1900,27 @@ main( M_CRC); if (sb_feat.crcs_enabled) sb_feat.dirftype = true; + opts[OPT_M].subopt_params[M_CRC].value = + sb_feat.crcs_enabled; break; case M_FINOBT: sb_feat.finobt = getnum( value, &opts[OPT_M], M_FINOBT); + opts[OPT_M].subopt_params[M_FINOBT].value = + sb_feat.finobt; break; case M_UUID: if (!value || *value == '\0') reqval('m', subopts, M_UUID); if (platform_uuid_parse(value, &uuid)) illegal(optarg, "m uuid"); + opts[OPT_M].subopt_params[M_UUID].value = 1; break; case M_RMAPBT: sb_feat.rmapbt = getnum( value, &opts[OPT_M], M_RMAPBT); + opts[OPT_M].subopt_params[M_RMAPBT].value = + sb_feat.rmapbt; break; case M_REFLINK: sb_feat.reflink = getnum( @@ -1841,6 +1943,10 @@ main( N_LOG); dirblocksize = 1 << dirblocklog; nlflag = 1; + opts[OPT_N].subopt_params[N_SIZE].value = + dirblocksize; + opts[OPT_N].subopt_params[N_LOG].value = + dirblocklog; break; case N_SIZE: dirblocksize = getnum(value, &opts[OPT_N], @@ -1848,6 +1954,10 @@ main( dirblocklog = libxfs_highbit32(dirblocksize); nsflag = 1; + opts[OPT_N].subopt_params[N_SIZE].value = + dirblocksize; + opts[OPT_N].subopt_params[N_LOG].value = + dirblocklog; break; case N_VERSION: value = getstr(value, &opts[OPT_N], @@ -1861,10 +1971,14 @@ main( N_VERSION); } nvflag = 1; + opts[OPT_N].subopt_params[N_VERSION].value = + sb_feat.dir_version; break; case N_FTYPE: sb_feat.dirftype = getnum(value, &opts[OPT_N], N_FTYPE); + opts[OPT_N].subopt_params[N_FTYPE].value = + sb_feat.dirftype; break; default: unknown('n', value); @@ -1895,23 +2009,33 @@ main( case R_EXTSIZE: rtextbytes = getnum(value, &opts[OPT_R], R_EXTSIZE); + opts[OPT_R].subopt_params[R_EXTSIZE].value = + rtextbytes; break; case R_FILE: xi.risfile = getnum(value, &opts[OPT_R], R_FILE); + opts[OPT_R].subopt_params[R_FILE].value = + xi.risfile; break; case R_NAME: case R_DEV: xi.rtname = getstr(value, &opts[OPT_R], R_NAME); + opts[OPT_R].subopt_params[R_NAME].value = 1; + opts[OPT_R].subopt_params[R_DEV].value = 1; break; case R_SIZE: rtbytes = getnum(value, &opts[OPT_R], R_SIZE); + opts[OPT_R].subopt_params[R_SIZE].value = + rtbytes; break; case R_NOALIGN: norsflag = getnum(value, &opts[OPT_R], R_NOALIGN); + opts[OPT_R].subopt_params[R_NOALIGN].value = + norsflag; break; default: unknown('r', value); @@ -1936,6 +2060,10 @@ main( sectorsize = 1 << sectorlog; lsectorsize = sectorsize; lslflag = slflag = 1; + opts[OPT_S].subopt_params[S_LOG].value = + sectorsize; + opts[OPT_S].subopt_params[S_SECTLOG].value = + sectorsize; break; case S_SIZE: case S_SECTSIZE: @@ -1949,6 +2077,10 @@ main( libxfs_highbit32(sectorsize); lsectorlog = sectorlog; lssflag = ssflag = 1; + opts[OPT_S].subopt_params[S_SIZE].value = + sectorlog; + opts[OPT_S].subopt_params[S_SECTSIZE].value = + sectorlog; break; default: unknown('s', value);
Add a new field int opt_params - value, which is filled with user input. Signed-off-by: Jan Tulak <jtulak@redhat.com> --- mkfs/xfs_mkfs.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+)