[PATCH blktests] nvme: add regression test for concurrently enable/disable nvmet ns
Chaitanya Kulkarni
chaitanyak at nvidia.com
Tue May 21 17:54:30 PDT 2024
On 5/21/24 01:56, Sagi Grimberg wrote:
> Reproduce a hang in nvmet when concurrently disabling/enabling
> an nvmet namespace.
>
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
thanks for the test ...
> ---
> tests/nvme/051 | 48 ++++++++++++++++++++++++++++++++++++++++++++++
> tests/nvme/051.out | 2 ++
> 2 files changed, 50 insertions(+)
> create mode 100755 tests/nvme/051
> create mode 100644 tests/nvme/051.out
>
> diff --git a/tests/nvme/051 b/tests/nvme/051
> new file mode 100755
> index 000000000000..ddc097310dd7
> --- /dev/null
> +++ b/tests/nvme/051
> @@ -0,0 +1,48 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-3.0+
> +# Copyright (C) 2024 Sagi Grimberg
> +#
> +# Regression test for kernel hang when enabling/disabling nvmet
> +# namespace concurrently
> +
> +. tests/nvme/rc
> +
> +DESCRIPTION="test nvmet concurrent ns enable/disable"
> +QUICK=1
> +
> +requires() {
> + _nvme_requires
> + _require_nvme_trtype_is_fabrics
> +}
> +
> +set_conditions() {
> + _set_nvme_trtype "$@"
> +}
> +
> +ns_enable_disable_loop() {
> + local ns="$1"
nit: how about :-
local ns="${NVMET_CFS}subsystems/${def_subsysnqn}/namespaces/1"
and get rid of the argument at the call site ? unless there is
a plan to use different namespaces
> + local iterations=200
nit: not sure if we need iterations as variable, unless there is
a plan to make it configurable in the future maybe we can
remove that ?
> + for ((i = 1; i <= ${iterations}; i++)); do
> + echo 0 > $ns/enable
> + echo 1 > $ns/enable
> + done
> +}
> +
> +test() {
> + echo "Running ${TEST_NAME}"
> +
> + _setup_nvmet
> +
> + _nvmet_target_setup
> + ns="${NVMET_CFS}subsystems/${def_subsysnqn}/namespaces/1"
> +
> + # fire off two enable/disable loops concurrently and wait
> + # for them to complete...
> + ns_enable_disable_loop $ns &
> + ns_enable_disable_loop $ns &
> + wait
> +
> + _nvmet_target_cleanup
> +
> + echo "Test complete"
> +}
> diff --git a/tests/nvme/051.out b/tests/nvme/051.out
> new file mode 100644
> index 000000000000..156f0687aab2
> --- /dev/null
> +++ b/tests/nvme/051.out
> @@ -0,0 +1,2 @@
> +Running nvme/051
> +Test complete
irrespective of couple of nits, looks good.
Reviewed-by: Chaitanya Kulkarni <kch at nvidia.com>
-ck
More information about the Linux-nvme
mailing list