From: Bart Van Assche Date: Sun, 27 Mar 2022 15:18:41 +0000 (-0700) Subject: Introduce the _io_schedulers() function X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a2fd4eef60e490e4f2852f94c00f02d088eee769;p=users%2Fhch%2Fblktests.git Introduce the _io_schedulers() function The functionality for retrieving the I/O schedulers supported by a request queue occurs multiple times. Hence introduce a function for retrieving the supported I/O schedulers. Signed-off-by: Bart Van Assche --- diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma index 8b285e6..f9d7b9a 100644 --- a/common/multipath-over-rdma +++ b/common/multipath-over-rdma @@ -298,17 +298,6 @@ set_scheduler() { fi } -# Get block dev scheduler list -get_scheduler_list() { - local b=$1 p - p=/sys/block/"$b"/queue/scheduler - if [ -e "$p" ]; then - sed 's/[][]//g' /sys/block/"$b"/queue/scheduler - else - return 1 - fi -} - # Get a /dev/... path that points at dm device number $1. Set its I/O scheduler # to $2 and its timeout to $3. The shell script that includes this file must # define a function get_bdev_path() that translates device number $1 into a diff --git a/common/rc b/common/rc index ff3d679..818acc3 100644 --- a/common/rc +++ b/common/rc @@ -334,6 +334,15 @@ _require_test_dev_is_partition() { return 0 } +# Prints a space-separated list with the names of all I/O schedulers supported +# by block device $1. +_io_schedulers() { + local path=/sys/class/block/$1/queue/scheduler + + [ -e "${path}" ] || return 1 + sed 's/[][]//g' "${path}" +} + # Older versions of xfs_io use pwrite64 and such, so the error messages won't # match current versions of xfs_io. See c52086226bc6 ("filter: xfs_io output # has dropped "64" from error messages") in xfstests. diff --git a/tests/block/005 b/tests/block/005 index 77b9e2f..bd04a00 100755 --- a/tests/block/005 +++ b/tests/block/005 @@ -17,9 +17,8 @@ requires() { test_device() { echo "Running ${TEST_NAME}" - local scheds # shellcheck disable=SC2207 - scheds=($(sed 's/[][]//g' "${TEST_DEV_SYSFS}/queue/scheduler")) + local scheds=($(_io_schedulers "$(basename "${TEST_DEV_SYSFS}")")) if _test_dev_is_rotational; then size="32m" diff --git a/tests/block/014 b/tests/block/014 index 449046a..facd4bc 100755 --- a/tests/block/014 +++ b/tests/block/014 @@ -22,11 +22,7 @@ test() { return 1 fi - local scheds - # shellcheck disable=SC2207 - scheds=($(sed 's/[][]//g' /sys/block/nullb0/queue/scheduler)) - - for sched in "${scheds[@]}"; do + for sched in $(_io_schedulers nullb0); do echo "Testing $sched" >> "$FULL" echo "$sched" > /sys/block/nullb0/queue/scheduler # Do a bunch of I/Os which will timeout and then complete. The diff --git a/tests/block/015 b/tests/block/015 index 2e5cf35..389c67f 100755 --- a/tests/block/015 +++ b/tests/block/015 @@ -24,11 +24,7 @@ test() { return 1 fi - local scheds - # shellcheck disable=SC2207 - scheds=($(sed 's/[][]//g' /sys/block/nullb0/queue/scheduler)) - - for sched in "${scheds[@]}"; do + for sched in $(_io_schedulers nullb0); do echo "Testing $sched" >> "$FULL" echo "$sched" > /sys/block/nullb0/queue/scheduler dd if=/dev/nullb0 of=/dev/null bs=4K count=$((512 * 1024)) \ diff --git a/tests/block/020 b/tests/block/020 index 3e8cbbd..5ffa232 100755 --- a/tests/block/020 +++ b/tests/block/020 @@ -25,16 +25,12 @@ test() { return 1 fi - local scheds - # shellcheck disable=SC2207 - scheds=($(sed 's/[][]//g' /sys/block/nullb1/queue/scheduler)) - local max_iodepth=$(($(cat /proc/sys/fs/aio-max-nr) / $(nproc))) local iodepth=1024 if (( iodepth > max_iodepth )); then iodepth=$max_iodepth fi - for sched in "${scheds[@]}"; do + for sched in $(_io_schedulers nullb1); do echo "Testing $sched" >> "$FULL" echo "$sched" > /sys/block/nullb1/queue/scheduler _fio_perf --bs=4k --ioengine=libaio --iodepth=$iodepth \ diff --git a/tests/block/021 b/tests/block/021 index 89ebcd0..525d707 100755 --- a/tests/block/021 +++ b/tests/block/021 @@ -26,11 +26,8 @@ test() { local max_nr local nr - local scheds - # shellcheck disable=SC2207 - scheds=($(sed 's/[][]//g' /sys/block/nullb1/queue/scheduler)) - for sched in "${scheds[@]}"; do + for sched in $(_io_schedulers nullb1); do echo "Testing $sched" >> "$FULL" echo "$sched" > /sys/block/nullb1/queue/scheduler max_nr="$(cat /sys/block/nullb1/queue/nr_requests)" diff --git a/tests/nvmeof-mp/012 b/tests/nvmeof-mp/012 index 8b2e918..b2d7a63 100755 --- a/tests/nvmeof-mp/012 +++ b/tests/nvmeof-mp/012 @@ -18,7 +18,7 @@ test_io_schedulers() { use_blk_mq ${mq} || return $? dev=$(get_bdev 0) || return $? dm=$(basename "$(readlink -f "${dev}")") || return $? - scheds="$(get_scheduler_list "$dm")" || return $? + scheds="$(_io_schedulers "$dm")" || return $? for sched in $scheds; do set_scheduler "$dm" "$sched" \ >>"$FULL" 2>&1 || continue diff --git a/tests/srp/012 b/tests/srp/012 index 1a2fc6d..b862ac4 100755 --- a/tests/srp/012 +++ b/tests/srp/012 @@ -22,7 +22,7 @@ test_io_schedulers() { use_blk_mq ${mq} ${mq} || return $? dev=$(get_bdev 0) || return $? dm=$(basename "$(readlink -f "${dev}")") || return $? - scheds="$(get_scheduler_list "$dm")" || return $? + scheds="$(_io_schedulers "$dm")" || return $? for sched in $scheds; do set_scheduler "$dm" "$sched" \ >>"$FULL" 2>&1 || continue