]> www.infradead.org Git - users/hch/blktests.git/commitdiff
tests/srp/015: Add a test that uses the SoftiWARP (siw) driver
authorBart Van Assche <bvanassche@acm.org>
Fri, 13 Dec 2019 14:32:32 +0000 (09:32 -0500)
committerOmar Sandoval <osandov@fb.com>
Thu, 19 Dec 2019 22:45:55 +0000 (14:45 -0800)
Recently support has been added in the SRP initiator and target drivers
for the SoftiWARP driver. Add a test for SRP over SoftiWARP.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
common/rc
tests/srp/015 [new file with mode: 0755]
tests/srp/015.out [new file with mode: 0644]

index 87b1e0718382054987ec22e846dcc5ba02824b76..63b29be7ba74c0bdfab6e4b5c9ae77965dacc026 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -87,6 +87,21 @@ _have_program() {
        return 1
 }
 
+# Check whether the iproute2 snapshot is greater than or equal to $1.
+_have_iproute2() {
+       local snapshot
+
+       if ! snapshot=$(ip -V | sed 's/ip utility, iproute2-ss//'); then
+               SKIP_REASON="ip utility not found"
+               return 1
+       fi
+       if [ "$snapshot" -lt "$1" ]; then
+               SKIP_REASON="ip utility too old"
+               return 1
+       fi
+       return 0
+}
+
 _have_src_program() {
        if [[ ! -x "$SRCDIR/$1" ]]; then
                SKIP_REASON="$1 was not built; run \`make\`"
@@ -134,6 +149,19 @@ _have_kernel_option() {
        return 1
 }
 
+# Check whether the version of the running kernel is greater than or equal to
+# $1.$2.$3
+_have_kver() {
+       local d=$1 e=$2 f=$3
+
+       IFS='.' read -r a b c < <(uname -r | sed 's/-.*//')
+       if [ $((a * 65536 + b * 256 + c)) -lt $((d * 65536 + e * 256 + f)) ];
+       then
+               SKIP_REASON="Kernel version too old"
+               return 1
+       fi
+}
+
 _have_tracefs() {
        stat /sys/kernel/debug/tracing/trace > /dev/null 2>&1
        if ! findmnt -t tracefs /sys/kernel/debug/tracing >/dev/null; then
diff --git a/tests/srp/015 b/tests/srp/015
new file mode 100755 (executable)
index 0000000..e9769dc
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright 2019 Google LLC
+
+. tests/srp/rc
+
+DESCRIPTION="File I/O on top of multipath concurrently with logout and login (mq) using the SoftiWARP (siw) driver"
+TIMED=1
+
+requires() {
+       _have_modules siw
+       _have_kver 5 5
+       # See also commit 4336c5821a7b ("rdma: add 'link add/delete' commands").
+       _have_iproute2 190404
+}
+
+test_disconnect_repeatedly() {
+       local dev fio_status m
+
+       use_blk_mq y y || return $?
+       dev=$(get_bdev 0) || return $?
+       m=$(mountpoint 0) || return $?
+       create_filesystem "$dev" || return $?
+       mount_and_check "$dev" "$m" || return $?
+       # shellcheck disable=SC2064
+       trap "unmount_and_check $m" RETURN
+       simulate_network_failure_loop "$dev" "$TIMEOUT" &
+       run_fio --verify=md5 --rw=randwrite --bs=4K --loops=$((10**6)) \
+               --iodepth=64 --group_reporting --sync=1 --direct=1 \
+               --ioengine=libaio --directory="$m" --runtime="${TIMEOUT}" \
+               --name=data-integrity-test-mq --thread --numjobs=16 \
+               --output="${RESULTS_DIR}/srp/fio-output-015.txt" \
+               >>"$FULL"
+       fio_status=$?
+       wait
+       log_in
+       return $fio_status
+}
+
+test() {
+       : "${TIMEOUT:=30}"
+       trap 'trap "" EXIT; teardown' EXIT
+       use_siw=1
+       setup && test_disconnect_repeatedly && echo Passed
+}
diff --git a/tests/srp/015.out b/tests/srp/015.out
new file mode 100644 (file)
index 0000000..5e25d8e
--- /dev/null
@@ -0,0 +1,2 @@
+Configured SRP target driver
+Passed