]> www.infradead.org Git - users/hch/blktests.git/commitdiff
nvmeof-mp/012, srp/012: fix the scheduler list
authorYi Zhang <yi.zhang@redhat.com>
Thu, 26 Nov 2020 08:35:30 +0000 (16:35 +0800)
committerOmar Sandoval <osandov@fb.com>
Mon, 4 Jan 2021 22:41:32 +0000 (14:41 -0800)
There is no cfq scheduler and new added kyber scheduler in lastest kernel,
introduce get_scheduler_list and fix nvmeof-mp/012 srp/012

To reproduce it:
$ ./check nvmeof-mp/012
nvmeof-mp/012 (dm-mpath on top of multiple I/O schedulers)   [passed]
    runtime  5.922s  ...  8.804s

$ cat results/nodev/nvmeof-mp/012.full  | grep -n "Changing scheduler"
31:Changing scheduler of dm-3 from mq-deadline kyber [bfq] none into cfq failed
47:Changing scheduler of dm-3 from mq-deadline kyber [bfq] none into cfq failed

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
common/multipath-over-rdma
tests/nvmeof-mp/012
tests/srp/012

index 355b169181b293fd8be064db595eda8ad97933b4..56bbc858c9d602a399cce16134250546dea32b5e 100644 (file)
@@ -325,6 +325,17 @@ 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
index ae6a92c97041945edcb46650dcb25dbf1f121369..8b2e918773e588c5bd98bb47e35db935cc26acdb 100755 (executable)
@@ -8,7 +8,7 @@ DESCRIPTION="dm-mpath on top of multiple I/O schedulers"
 QUICK=1
 
 test_io_schedulers() {
-       local dev m
+       local dev m dm scheds
 
        # Load all I/O scheduler kernel modules
        for m in "/lib/modules/$(uname -r)/kernel/block/"*.ko; do
@@ -17,15 +17,17 @@ test_io_schedulers() {
        for mq in y n; do
                use_blk_mq ${mq} || return $?
                dev=$(get_bdev 0) || return $?
-               for sched in noop deadline bfq cfq; do
-                       set_scheduler "$(basename "$(readlink -f "${dev}")")" $sched \
+               dm=$(basename "$(readlink -f "${dev}")") || return $?
+               scheds="$(get_scheduler_list "$dm")" || return $?
+               for sched in $scheds; do
+                       set_scheduler "$dm" "$sched" \
                                      >>"$FULL" 2>&1 || continue
                        echo "I/O scheduler: $sched; use_blk_mq: $mq" >>"$FULL"
                        run_fio --verify=md5 --rw=randwrite --bs=4K --size=64K \
                                --ioengine=libaio --iodepth=64 \
                                --iodepth_batch=32 --group_reporting --sync=1 \
                                --direct=1 --filename="$dev" \
-                               --name=${sched} --thread --numjobs=1 \
+                               --name="${sched}" --thread --numjobs=1 \
                                --output="${RESULTS_DIR}/nvmeof-mp/012-${sched}-${mq}.txt" \
                                >>"$FULL" ||
                                return $?
index 20c6dafd7fc69050022483dcc4c735ea6c4c9f8c..ffd56efb9dfc5f8c04780b78646f82438bb5ff01 100755 (executable)
@@ -8,7 +8,7 @@ DESCRIPTION="dm-mpath on top of multiple I/O schedulers"
 QUICK=1
 
 test_io_schedulers() {
-       local dev m
+       local dev m dm scheds
 
        # Load all I/O scheduler kernel modules
        for m in "/lib/modules/$(uname -r)/kernel/block/"*.ko; do
@@ -18,15 +18,17 @@ test_io_schedulers() {
                [ $mq = n ] && ! _have_legacy_dm && continue
                use_blk_mq ${mq} ${mq} || return $?
                dev=$(get_bdev 0) || return $?
-               for sched in noop deadline bfq cfq; do
-                       set_scheduler "$(basename "$(readlink -f "${dev}")")" $sched \
+               dm=$(basename "$(readlink -f "${dev}")") || return $?
+               scheds="$(get_scheduler_list "$dm")" || return $?
+               for sched in $scheds; do
+                       set_scheduler "$dm" "$sched" \
                                      >>"$FULL" 2>&1 || continue
                        echo "I/O scheduler: $sched; use_blk_mq: $mq" >>"$FULL"
                        run_fio --verify=md5 --rw=randwrite --bs=4K --size=64K \
                                --ioengine=libaio --iodepth=64 \
                                --iodepth_batch=32 --group_reporting --sync=1 \
                                --direct=1 --filename="$dev" \
-                               --name=${sched} --thread --numjobs=1 \
+                               --name="${sched}" --thread --numjobs=1 \
                                --output="${RESULTS_DIR}/srp/012-${sched}-${mq}.txt" \
                                >>"$FULL" ||
                                return $?