On Thu, Oct 15, 2020 at 02:29:20PM +1100, Dave Chinner wrote: > Version 2: > > - "-c file=xxx" > "-c options=xxx" > - split out constification into new patch > - removed debug output > - fixed some comments > - added man page stuff > > Hi Folks, > > Because needing config files for mkfs came up yet again in > discussion, here is a simple implementation of INI format config > files. These config files behave identically to options specified on > the command line - the do not change defaults, they do not override > CLI options, they are not overridden by cli options. > > Example: > > $ echo -e "[metadata]\ncrc = 0" > foo > $ mkfs/mkfs.xfs -N -c options=foo -d file=1,size=100m blah > Parameters parsed from config file foo successfully > meta-data=blah isize=256 agcount=4, agsize=6400 blks > = sectsz=512 attr=2, projid32bit=1 > = crc=0 finobt=0, sparse=0, rmapbt=0 > = reflink=0 > data = bsize=4096 blocks=25600, imaxpct=25 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 ascii-ci=0, ftype=1 > log =internal log bsize=4096 blocks=853, version=2 > = sectsz=512 sunit=0 blks, lazy-count=1 > realtime =none extsz=4096 blocks=0, rtextents=0 > $ > > And there's a V4 filesystem as specified by the option defined > in the config file. If we do: > > $ mkfs/mkfs.xfs -N -c options=foo -m crc=1 -d file=1,size=100m blah > -m crc option respecified > Usage: mkfs.xfs > ..... > $ > > You can see it errors out because the CRC option was specified in > both the config file and on the CLI. > > There's lots of stuff we can do to make the conflict and respec > error messages better, but that doesn't change the basic > functionality of config file based mkfs options. To allow for future > changes to the way we want to apply config files, I created a > full option subtype for config files. That means we can add another > option to say "apply config file as default values rather than as > options" if we decide that is functionality that we want to support. > > However, policy decisions like that are completely separate to the > mechanism, so these patches don't try to address desires to ship > "tuned" configs, system wide option files, shipping distro specific > defaults in config files, etc. This is purely a mechanism to allow > users to specify options via files instead of on the CLI. No more, > no less. > > This has only been given a basic smoke testing right now (see above! > :). I need to get Darrick's tests from the previous round of config This was in the v1 series; have you gotten Darrick's fstests to do more substantial testing? ;) --D > file bikeshedding working in my test environment to do more > substantial testing of this.... > > Cheers, > > Dave. > > > Dave Chinner (5): > build: add support for libinih for mkfs > mkfs: add initial ini format config file parsing support > mkfs: constify various strings > mkfs: hook up suboption parsing to ini files > mkfs: document config files in mkfs.xfs(8) > > configure.ac | 3 + > doc/INSTALL | 5 + > include/builddefs.in | 1 + > include/linux.h | 2 +- > m4/package_inih.m4 | 20 ++++ > man/man8/mkfs.xfs.8 | 113 +++++++++++++++++++-- > mkfs/Makefile | 2 +- > mkfs/xfs_mkfs.c | 228 ++++++++++++++++++++++++++++++++++++++----- > 8 files changed, 340 insertions(+), 34 deletions(-) > create mode 100644 m4/package_inih.m4 > > -- > 2.28.0 >