From: Nilay Shroff <nilay@linux.ibm.com>
To: linux-nvme@lists.infradead.org, linux-block@vger.kernel.org
Cc: shinichiro.kawasaki@wdc.com, martin.wilck@suse.com,
gjoyce@linux.ibm.com, Nilay Shroff <nilay@linux.ibm.com>
Subject: [PATCHv3 blktests] nvme/{033-037}: timeout while waiting for nvme passthru namespace device
Date: Fri, 27 Sep 2024 13:25:48 +0530 [thread overview]
Message-ID: <20240927075616.343850-1-nilay@linux.ibm.com> (raw)
Avoid waiting indefinitely for nvme passthru namespace block device
to appear. Wait for up to 5 seconds and during this time if namespace
device doesn't appear then bail out and FAIL the test.
Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
---
Changes from v2:
- Add nsdev check back into nvme/036 (Shnichiro Kawasaki)
Changes from v1:
- Add a meaningful error message if test fails (Shnichiro
Kawasaki)
- Use sleep "1" instead of ".1" while waiting for nsdev to be
created as we don't see much gain in test runtime with short
duration of sleep. This would also help further optimize
the sleep logic (Shnichiro Kawasaki)
- Few other trivial cleanups (Shnichiro Kawasaki)
---
tests/nvme/033 | 7 +++++--
tests/nvme/034 | 8 +++++---
tests/nvme/035 | 6 +++---
tests/nvme/036 | 11 ++++++++---
tests/nvme/037 | 7 ++++++-
tests/nvme/rc | 9 ++++++++-
6 files changed, 35 insertions(+), 13 deletions(-)
diff --git a/tests/nvme/033 b/tests/nvme/033
index 5e05175..d0581c2 100755
--- a/tests/nvme/033
+++ b/tests/nvme/033
@@ -62,8 +62,11 @@ test_device() {
_nvmet_passthru_target_setup
nsdev=$(_nvmet_passthru_target_connect)
-
- compare_dev_info "${nsdev}"
+ if [[ -z "$nsdev" ]]; then
+ echo "FAIL: Failed to find passthru target namespace"
+ else
+ compare_dev_info "${nsdev}"
+ fi
_nvme_disconnect_subsys
_nvmet_passthru_target_cleanup
diff --git a/tests/nvme/034 b/tests/nvme/034
index 154fc91..a4c5e97 100755
--- a/tests/nvme/034
+++ b/tests/nvme/034
@@ -27,13 +27,15 @@ test_device() {
_setup_nvmet
- local ctrldev
local nsdev
_nvmet_passthru_target_setup
nsdev=$(_nvmet_passthru_target_connect)
-
- _run_fio_verify_io --size="${NVME_IMG_SIZE}" --filename="${nsdev}"
+ if [[ -z "$nsdev" ]]; then
+ echo "FAIL: Failed to find passthru target namespace"
+ else
+ _run_fio_verify_io --size="${NVME_IMG_SIZE}" --filename="${nsdev}"
+ fi
_nvme_disconnect_subsys
_nvmet_passthru_target_cleanup
diff --git a/tests/nvme/035 b/tests/nvme/035
index ff217d6..9f84ced 100755
--- a/tests/nvme/035
+++ b/tests/nvme/035
@@ -30,13 +30,13 @@ test_device() {
_setup_nvmet
- local ctrldev
local nsdev
_nvmet_passthru_target_setup
nsdev=$(_nvmet_passthru_target_connect)
-
- if ! _xfs_run_fio_verify_io "${nsdev}" "${NVME_IMG_SIZE}"; then
+ if [[ -z "$nsdev" ]]; then
+ echo "FAIL: Failed to find passthru target namespace"
+ elif ! _xfs_run_fio_verify_io "${nsdev}" "${NVME_IMG_SIZE}"; then
echo "FAIL: fio verify failed"
fi
diff --git a/tests/nvme/036 b/tests/nvme/036
index 442ffe7..11cd5c1 100755
--- a/tests/nvme/036
+++ b/tests/nvme/036
@@ -27,14 +27,19 @@ test_device() {
_setup_nvmet
local ctrldev
+ local nsdev
_nvmet_passthru_target_setup
nsdev=$(_nvmet_passthru_target_connect)
- ctrldev=$(_find_nvme_dev "${def_subsysnqn}")
+ if [[ -z "$nsdev" ]]; then
+ echo "FAIL: Failed to find passthru target namespace"
+ else
+ ctrldev=$(_find_nvme_dev "${def_subsysnqn}")
- if ! nvme reset "/dev/${ctrldev}" >> "$FULL" 2>&1; then
- echo "ERROR: reset failed"
+ if ! nvme reset "/dev/${ctrldev}" >> "$FULL" 2>&1; then
+ echo "ERROR: reset failed"
+ fi
fi
_nvme_disconnect_subsys
diff --git a/tests/nvme/037 b/tests/nvme/037
index f7ddc2d..33a6857 100755
--- a/tests/nvme/037
+++ b/tests/nvme/037
@@ -27,7 +27,7 @@ test_device() {
local subsys="blktests-subsystem-"
local iterations=10
- local ctrldev
+ local nsdev
for ((i = 0; i < iterations; i++)); do
_nvmet_passthru_target_setup --subsysnqn "${subsys}${i}"
@@ -37,6 +37,11 @@ test_device() {
_nvme_disconnect_subsys \
--subsysnqn "${subsys}${i}" >>"${FULL}" 2>&1
_nvmet_passthru_target_cleanup --subsysnqn "${subsys}${i}"
+
+ if [[ -z "$nsdev" ]]; then
+ echo "FAIL: Failed to find passthru target namespace"
+ break
+ fi
done
echo "Test complete"
diff --git a/tests/nvme/rc b/tests/nvme/rc
index a877de3..671012e 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -394,6 +394,8 @@ _nvmet_passthru_target_setup() {
_nvmet_passthru_target_connect() {
local subsysnqn="$def_subsysnqn"
+ local timeout="5"
+ local count="0"
while [[ $# -gt 0 ]]; do
case $1 in
@@ -414,7 +416,12 @@ _nvmet_passthru_target_connect() {
# The following tests can race with the creation
# of the device so ensure the block device exists
# before continuing
- while [ ! -b "${nsdev}" ]; do sleep 1; done
+ while [ ! -b "${nsdev}" ]; do
+ sleep 1
+ if ((++count >= timeout)); then
+ return 1
+ fi
+ done
echo "${nsdev}"
}
--
2.45.2
next reply other threads:[~2024-09-27 7:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-27 7:55 Nilay Shroff [this message]
2024-10-04 9:03 ` [PATCHv3 blktests] nvme/{033-037}: timeout while waiting for nvme passthru namespace device Shinichiro Kawasaki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240927075616.343850-1-nilay@linux.ibm.com \
--to=nilay@linux.ibm.com \
--cc=gjoyce@linux.ibm.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=martin.wilck@suse.com \
--cc=shinichiro.kawasaki@wdc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox