From f09f239b427d3f1cd059db6222807f54be49b527 Mon Sep 17 00:00:00 2001 From: Nilay Shroff Date: Fri, 27 Sep 2024 13:25:48 +0530 Subject: [PATCH] nvme/{033-037}: timeout while waiting for nvme passthru namespace device 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 Signed-off-by: Shin'ichiro 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 5e051753..d0581c22 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 154fc911..a4c5e97a 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 ff217d67..9f84ced5 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 442ffe71..11cd5c19 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 f7ddc2d8..33a68576 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 a877de37..671012ea 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}" }