From: Eric Sandeen Date: Fri, 14 Mar 2025 18:37:45 +0000 (-0500) Subject: common/rc: explicitly test for engine availability in _require_fio X-Git-Tag: v2025.03.17^0 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d71157da4ef4cfdbf39e2c4a07f8013633e6bcbe;p=xfstests-dev.git common/rc: explicitly test for engine availability in _require_fio The current test in _require_fio (--warnings-fatal --showcmd) does not fail if an invalid/unavailable io engine is specified. Add an explicit test that every requested io engine in the job file is actually available. Also, remove the "ioe_e4defrag" entries in the [global] stanza of several ext4 tests which use fio jobfiles. While ioengines can be set in the [global] section, they can also be overridden in individual, subsequent stanzas. In each affected test (ext4/301, ext4/302, ext4/303, and ext4/304) every individual stanza after [global]re-specifies an ioengine; either with ioengine=e4defrag or ioengine=libaio. Because of this re-specification, the ioengine in the [global] section is ignored. This is a good thing, because ioe_e4defrag is not a valid ioengine, and would fail this new hand-rolled check, even though fio did not complain. So rather than over-complicate this new check, simply remove the unused, invalid "ioengine=ioe_e4defrag" lines in these tests. Signed-off-by: Eric Sandeen Reviewed-by: Darrick J. Wong Reviewed-by: Zorro Lang Signed-off-by: Zorro Lang --- diff --git a/common/rc b/common/rc index dcdfa86e..e5168638 100644 --- a/common/rc +++ b/common/rc @@ -3985,12 +3985,19 @@ _require_scratch_dev_pool_equal_size() _require_fio() { local job=$1 + local eng _require_command "$FIO_PROG" fio if [ -z "$1" ]; then return 1; fi + # Explicitly check for every ioengine listed in the job + for eng in `sed -n "s/ioengine=\(.*\)/\1/p" $job | sort -u`; do + grep -wq $eng <($FIO_PROG --enghelp 2>/dev/null) || \ + _notrun "fio engine $eng not available" + done + $FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1 [ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full" } diff --git a/tests/ext4/301 b/tests/ext4/301 index abf47d4b..a05b8e8a 100755 --- a/tests/ext4/301 +++ b/tests/ext4/301 @@ -31,7 +31,6 @@ FILE_SIZE=$((BLK_DEV_SIZE * (512 / (2 + 1)))) cat >$fio_config <$fio_config <$fio_config <$fio_config <