[PATCH blktests] nvme: add regression test for concurrently enable/disable nvmet ns
Yi Zhang
yi.zhang at redhat.com
Tue May 21 20:46:12 PDT 2024
Hi Sagi
Some note from shellcheck
$ make check
shellcheck -x -e SC2119 -f gcc check common/* \
tests/*/rc tests/*/[0-9]*[0-9] src/*.sh
tests/nvme/051:25:20: note: $/${} is unnecessary on arithmetic
variables. [SC2004]
tests/nvme/051:26:12: note: Double quote to prevent globbing and word
splitting. [SC2086]
tests/nvme/051:27:12: note: Double quote to prevent globbing and word
splitting. [SC2086]
On Tue, May 21, 2024 at 6:08 PM Sagi Grimberg <sagi at grimberg.me> wrote:
>
> Forgot to CC Shinichiro...
>
> On 21/05/2024 11: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>
> > ---
> > 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"
> > + local iterations=200
> > + 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
>
>
--
Best Regards,
Yi Zhang
More information about the Linux-nvme
mailing list