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@xxxxxxx> --- common/rc | 28 ++++++++++++++++++++++++++++ tests/srp/015 | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/srp/015.out | 2 ++ 3 files changed, 75 insertions(+) create mode 100755 tests/srp/015 create mode 100644 tests/srp/015.out diff --git a/common/rc b/common/rc index 87b1e0718382..63b29be7ba74 100644 --- 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 index 000000000000..e9769dc8a6a0 --- /dev/null +++ b/tests/srp/015 @@ -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 index 000000000000..5e25d8e8672d --- /dev/null +++ b/tests/srp/015.out @@ -0,0 +1,2 @@ +Configured SRP target driver +Passed