[PATCH blktests v2] nvme: add nvmf reset/disconnect during traffic test
Alan Adamson
alan.adamson at oracle.com
Thu Jun 30 14:24:28 PDT 2022
Looks good. I’ve tested it on my config.
Reviewed-by: Alan Adamson <alan.adamson at oracle.com>
> On Jun 30, 2022, at 8:44 AM, Sagi Grimberg <sagi at grimberg.me> wrote:
>
> Test traffic controller reset and disconnect during traffic.
>
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
> Changes from v1:
> - fix copyright
> - change subsys name
> - fix test cleanup warnings
> - don't log device names
> - fix shellcheck
>
> tests/nvme/040 | 59 ++++++++++++++++++++++++++++++++++++++++++++++
> tests/nvme/040.out | 6 +++++
> tests/nvme/rc | 8 +++++++
> 3 files changed, 73 insertions(+)
> create mode 100755 tests/nvme/040
> create mode 100644 tests/nvme/040.out
>
> diff --git a/tests/nvme/040 b/tests/nvme/040
> new file mode 100755
> index 000000000000..d259784698d9
> --- /dev/null
> +++ b/tests/nvme/040
> @@ -0,0 +1,59 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-3.0+
> +# Copyright (C) 2022 Sagi Grimberg <sagi at grimberg.me>
> +#
> +# Test nvme fabrics controller reset/disconnect/reconnect operation during I/O
> +# This test is somewhat similar to test 032 but for fabrics controllers.
> +
> +. tests/nvme/rc
> +
> +DESCRIPTION="test nvme fabrics controller reset/disconnect operation during I/O"
> +
> +requires() {
> + _nvme_requires
> + _have_loop
> + _have_fio
> + _require_nvme_trtype_is_fabrics
> +}
> +
> +test() {
> + local subsys="blktests-subsystem-1"
> + local port
> + local loop_dev
> + local nvmedev
> +
> + echo "Running ${TEST_NAME}"
> +
> + _setup_nvmet
> + truncate -s 1G "$TMPDIR/img"
> + loop_dev="$(losetup -f --show "$TMPDIR/img")"
> +
> + port="$(_create_nvmet_port "${nvme_trtype}")"
> + _create_nvmet_subsystem "${subsys}" "${loop_dev}"
> + _add_nvmet_subsys_to_port "${port}" "${subsys}"
> + _nvme_connect_subsys "${nvme_trtype}" "${subsys}"
> + udevadm settle
> + nvmedev=$(_find_nvme_dev "${subsys}")
> +
> + # start fio job
> + echo "starting background fio"
> + _run_fio_rand_io --filename="${nvmedev}n1" --size=1g \
> + --group_reporting --ramp_time=5 &> /dev/null &
> + sleep 5
> +
> + # do reset/remove operation
> + echo "resetting controller"
> + _nvme_reset_ctrl ${nvmedev}
> + sleep 1
> + echo "deleting controller"
> + _nvme_delete_ctrl ${nvmedev}
> +
> + echo "stopping background fio"
> + { kill $!; wait; } &> /dev/null
> +
> + _remove_nvmet_subsystem_from_port "${port}" "${subsys}"
> + _remove_nvmet_subsystem "${subsys}"
> + _remove_nvmet_port "${port}"
> +
> + echo "Test complete"
> +}
> diff --git a/tests/nvme/040.out b/tests/nvme/040.out
> new file mode 100644
> index 000000000000..50d02d4e3cd0
> --- /dev/null
> +++ b/tests/nvme/040.out
> @@ -0,0 +1,6 @@
> +Running nvme/040
> +starting background fio
> +resetting controller
> +deleting controller
> +stopping background fio
> +Test complete
> diff --git a/tests/nvme/rc b/tests/nvme/rc
> index 4bebbc762cbb..dfea7f3a0da4 100644
> --- a/tests/nvme/rc
> +++ b/tests/nvme/rc
> @@ -447,3 +447,11 @@ _nvme_disable_err_inject()
> echo 0 > /sys/kernel/debug/"$1"/fault_inject/probability
> echo 0 > /sys/kernel/debug/"$1"/fault_inject/times
> }
> +
> +_nvme_reset_ctrl() {
> + echo 1 > /sys/class/nvme/"$1"/reset_controller
> +}
> +
> +_nvme_delete_ctrl() {
> + echo 1 > /sys/class/nvme/"$1"/delete_controller
> +}
> --
> 2.34.1
>
>
More information about the Linux-nvme
mailing list