Configuration file with sections
================================

Configuration file with sections is useful for running xfstests on multiple
file systems, or multiple file system setups in a single run without any
help of external scripts.


Syntax
------

Syntax for defining a section is the following:

	[section_name]

Section name should consist of alphanumeric characters and '_'. Anything
else is forbidden and the section will not be recognised.

Each section in the configuration file should contain options in the format

	OPTION=value

'OPTION' must not contain any white space characters. 'value' can contain
any character you want with one simple limitation - characters ' and " can
only appear at the start and end of the 'value', however it is not required.

Note that options are carried between sections so the same options does not
have to be specified in each and every sections. However caution should be
exercised not to leave unwanted options set from previous sections.


Results
-------

For every section xfstests will run with specified options and will produce
separate results in the '$RESULT_BASE/$section_name' directory.


Different mount options
-----------------------

Specifying different mount options in difference config sections is allowed.
When TEST_FS_MOUNT_OPTS differs in the following section TEST_DEV will be
remounted with new TEST_FS_MOUNT_OPTS automatically before running the test.


Multiple file systems
---------------------

Having different file systems in different config sections is allowed. When
FSTYP differs in the following section the FSTYP file system will be created
automatically before running the test.

Note that if TEST_FS_MOUNT_OPTS, MOUNT_OPTIONS, MKFS_OPTIONS, or FSCK_OPTIONS
are not directly specified in the section it will be reset to the default for a
given file system.

You can also force the file system recreation by specifying RECREATE_TEST_DEV.

Run specified section only
--------------------------

Specifying '-s' argument with section name will run only the section
specified. The '-s' argument can be specified multiple times to allow multiple
sections to be run.

The options are still carried between section, that includes the sections
which are not going to be run. So you can do something like

[ext4]
TEST_DEV=/dev/sda1
TEST_DIR=/mnt/test
SCRATCH_DEV=/dev/sdb1
SCRATCH_MNT=/mnt/test1
FSTYP=ext4

[xfs]
FSTYP=xfs

[btrfs]
FSTYP=btrfs


and run

./check -s xfs -s btrfs

to check xfs and btrfs only. All the devices and mounts are still going to
be parsed from the section [ext4].

Example
-------

Here is an example of config file with sections:

[ext4_4k_block_size]
TEST_DEV=/dev/sda
TEST_DIR=/mnt/test
SCRATCH_DEV=/dev/sdb
SCRATCH_MNT=/mnt/test1
MKFS_OPTIONS="-q -F -b4096"
FSTYP=ext4
RESULT_BASE="`pwd`/results/`date +%d%m%y_%H%M%S`"

[ext4_1k_block_size]
MKFS_OPTIONS="-q -F -b1024"

[ext4_nojournal]
MKFS_OPTIONS="-q -F -b4096 -O ^has_journal"

[xfs_filesystem]
MKFS_OPTIONS="-f"
FSTYP=xfs

[ext3_filesystem]
FSTYP=ext3
MOUNT_OPTIONS="-o noatime"

[cephfs]
TEST_DIR=/mnt/test
TEST_DEV=192.168.14.1:6789:/
TEST_FS_MOUNT_OPTS="-o name=admin,secret=AQDuEBtYKEYRINGSECRETriSC8YJGDZsQHcr7g=="
FSTYP="ceph"

[glusterfs]
FSTYP=glusterfs
TEST_DIR=/mnt/gluster/test
TEST_DEV=192.168.1.1:testvol
SCRATCH_MNT=/mnt/gluster/scratch
SCRATCH_DEV=192.168.1.1:scratchvol
