@@ -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