From: Dave Chinner <dchinner@xxxxxxxxxx> Add a CLI option to specify the initial FSTYP to test. If this is not specified the the default of "xfs" will be used. This option is different to the way check has FSTYP specified as check-parallel has no infrastructure to support non block device based filesystems and hence we have to reject virtual or network based filesysetms are this point in time. This patch only implements default mkfs parameter support for the test device. Config sections can be used to override this as check will then format the test device when the section that defines non-default test device mkfs options is selected. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> --- check-parallel | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/check-parallel b/check-parallel index 498b53c5a..38fa4f7f9 100755 --- a/check-parallel +++ b/check-parallel @@ -18,7 +18,7 @@ run_section="" tmp=/tmp/check-parallel.$$ -export FSTYP=xfs +FSTYP= # We need to include the test list processing first as argument parsing # requires test list parsing and setup. @@ -35,6 +35,7 @@ check options -r randomize test order --exact-order run tests in the exact order specified -s section run only specified section from config file + -f <FSTYPE> specify the filesystem type to test testlist options -g group[,group...] include tests from these groups @@ -66,16 +67,39 @@ external_file argument is a path to a single file containing a list of tests to exclude in the form of <test dir>/<test name>. examples: - check-parallel -D /mnt xfs/001 - check-parallel -D /mnt -g quick + check-parallel -f xfs -D /mnt xfs/001 + check-parallel -f ext4 -D /mnt -g quick check-parallel -D /mnt -g xfs/quick check-parallel -D /mnt -x stress xfs/* - check-parallel -D /mnt -X .exclude -g auto - check-parallel -D /mnt -E ~/.xfstests.exclude + check-parallel -f btrfs -D /mnt -X .exclude -g auto + check-parallel -f udf -D /mnt -E ~/.xfstests.exclude ' exit 1 } +# Only support block device based filesystems with generic mkfs support +# at the moment. +is_supported_fstype() +{ + local fstype=$1 + + case $fstype in + xfs) ;; + ext2|ext3|ext4) ;; + udf) ;; + jfs) ;; + f2fs) ;; + btrfs) ;; + bcachefs) ;; + gfs2) ;; + ocfs2) ;; + *) + echo "unsupported FSTYPE: $fstype" + usage + ;; + esac +} + # Process command arguments first. while [ $# -gt 0 ]; do case "$1" in @@ -91,6 +115,8 @@ while [ $# -gt 0 ]; do --exact-order) _tl_setup_ordered ;; -n) show_test_list="yes" ;; + -f) is_supported_fstype $2 ; FSTYP=$2; shift ;; + -s) run_section="$run_section -s $2"; shift ;; -*) usage ;; @@ -108,6 +134,8 @@ while [ $# -gt 0 ]; do shift done +export FSTYP=${FSTYP:=xfs} + if [ ! -d "$basedir" ]; then echo "Invalid basedir specification" usage @@ -217,8 +245,6 @@ runner_go() xfs_io -f -c 'truncate 8g' $_scratch xfs_io -f -c 'truncate 1g' $_logwrites - mkfs.xfs -f $_test > /dev/null 2>&1 - export TEST_DEV=$(_create_loop_device $_test) export TEST_DIR=$me/test export SCRATCH_DEV=$(_create_loop_device $_scratch) @@ -232,6 +258,10 @@ runner_go() mkdir -p $RESULT_BASE rm -f $RESULT_BASE/check.* + # Only supports default mkfs parameters right now + wipefs $TEST_DEV > /dev/null 2>&1 + yes | mkfs -t $FSTYP $TEST_DEV > /dev/null 2>&1 + # export DUMP_CORRUPT_FS=1 # Run the tests in it's own mount namespace, as per the comment below -- 2.45.2