| #!/bin/bash |
| # SPDX-License-Identifier: GPL-3.0+ |
| # Copyright (C) 2017 Jens Axboe |
| # |
| # I/O polling helper functions. |
| |
| . common/shellcheck |
| |
| _have_fio_with_poll() { |
| if ! _have_fio; then |
| return 1 |
| fi |
| if ! fio --parse-only --name=test --ioengine=pvsync2 --hipri=1 1>/dev/null 2>&1; then |
| SKIP_REASON="Fio does not support polling" |
| return 1 |
| fi |
| return 0 |
| } |
| |
| _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_REASON="kernel does not support polling" |
| return 1 |
| fi |
| if ! echo "$old_io_poll" >"${TEST_DEV_SYSFS}/queue/io_poll" 2>/dev/null; then |
| SKIP_REASON="$TEST_DEV does not support polling" |
| return 1 |
| fi |
| return 0 |
| } |
| |
| _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 |
| SKIP_REASON="kernel does not support hybrid polling" |
| return 1 |
| fi |
| if ! echo "$old_io_poll_delay" >"${TEST_DEV_SYSFS}/queue/io_poll_delay" 2>/dev/null; then |
| SKIP_REASON="$TEST_DEV does not support hybrid polling" |
| return 1 |
| fi |
| return 0 |
| } |