]> www.infradead.org Git - users/sagi/blktests.git/commitdiff
nvme/048: make queue count check retry-able
authorDaniel Wagner <dwagner@suse.de>
Mon, 4 Mar 2024 13:48:26 +0000 (14:48 +0100)
committerShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 5 Mar 2024 01:13:05 +0000 (10:13 +0900)
We are racing with the reset path of the controller. That means, when we
set a new queue count, we might not observe the resetting state in time.
Thus, first check if we see the correct queue count and then the
controller state.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
[Shin'ichiro: removed unnecessary if block in nvmf_check_queue_count()]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
tests/nvme/048

index 8c314fae962094464c4c1c1e5bbf99d947223ece..f76cfedf8b03a6f8e50b056dc067b86aa3bb76c6 100755 (executable)
@@ -47,15 +47,24 @@ nvmf_check_queue_count() {
        local queue_count="$2"
        local nvmedev
        local queue_count_file
+       local retries
 
        nvmedev=$(_find_nvme_dev "${subsys_name}")
+       queue_count=$((queue_count + 1))
+       retries=5
+
        queue_count_file=$(cat /sys/class/nvme-fabrics/ctl/"${nvmedev}"/queue_count)
+       while [[ "${queue_count}" -ne "${queue_count_file}" ]]; do
+               if [[ "${retries}" == 0 ]]; then
+                       echo "expected queue count ${queue_count} not set"
+                       return 1
+               fi
 
-       queue_count=$((queue_count + 1))
-       if [[ "${queue_count}" -ne "${queue_count_file}" ]]; then
-               echo "expected queue count ${queue_count} not set"
-               return 1
-       fi
+               sleep 1
+
+               retries=$((retries - 1))
+               queue_count_file=$(cat /sys/class/nvme-fabrics/ctl/"${nvmedev}"/queue_count)
+       done
 
        return 0
 }
@@ -73,8 +82,8 @@ set_qid_max() {
        local qid_max="$2"
 
        set_nvmet_attr_qid_max "${subsys_name}" "${qid_max}"
-       nvmf_wait_for_state "${subsys_name}" "live" || return 1
        nvmf_check_queue_count "${subsys_name}" "${qid_max}" || return 1
+       nvmf_wait_for_state "${subsys_name}" "live" || return 1
 
        return 0
 }