return 0
}
-_require_test_dev_supports_io_poll() {
- local old_io_poll
- if ! old_io_poll="$(cat "${TEST_DEV_SYSFS}/queue/io_poll" 2>/dev/null)"; then
- SKIP_REASONS+=("kernel does not support polling")
- return 1
- fi
- if ! echo "$old_io_poll" >"${TEST_DEV_SYSFS}/queue/io_poll" 2>/dev/null; then
- SKIP_REASONS+=("$TEST_DEV does not support polling")
- return 1
- fi
- return 0
-}
-
_require_test_dev_supports_io_poll_delay() {
local old_io_poll_delay
if ! old_io_poll_delay="$(cat "${TEST_DEV_SYSFS}/queue/io_poll_delay" 2>/dev/null)"; then
}
device_requires() {
- _require_test_dev_supports_io_poll &&
- _require_test_dev_supports_io_poll_delay
+ _require_test_dev_supports_io_poll_delay
}
fallback_device() {
_fio_perf --bs=4k --rw=randread --norandommap --name=reads \
--filename="$TEST_DEV" --size="$size" --direct=1 \
- --ioengine=pvsync2 --hipri=1
+ --ioengine=pvsync2 --hipri="$1"
}
test_device() {
# no polling, run job
FIO_PERF_PREFIX="no poll "
- _test_dev_queue_set io_poll 0
- run_fio_job
+ run_fio_job 0
# turn on polling, switch to classic, run job
FIO_PERF_PREFIX="classic poll "
- _test_dev_queue_set io_poll 1
_test_dev_queue_set io_poll_delay -1
- run_fio_job
+ run_fio_job 1
# switch to auto-hybrid polling, run job
FIO_PERF_PREFIX="auto hybrid poll "
_test_dev_queue_set io_poll_delay 0
- run_fio_job
+ run_fio_job 1
# switch to explicit delay polling, run job
FIO_PERF_PREFIX="fixed hybrid poll "
_test_dev_queue_set io_poll_delay 4
- run_fio_job
+ run_fio_job 1
echo "Test complete"
}