[bug report] blktests nvme/047 failed due to /dev/nvme0n1 not created in time
Yi Zhang
yi.zhang at redhat.com
Thu Aug 10 07:38:18 PDT 2023
On Thu, Aug 10, 2023 at 8:51 PM Shinichiro Kawasaki
<shinichiro.kawasaki at wdc.com> wrote:
>
> On Aug 10, 2023 / 18:21, Yi Zhang wrote:
> > Hi Daniel/Shinichiro
> > Thanks for looking into this issue, I checked the 047 code, and we are
> > missing _find_nvme_dev after the second connect, and the below change
> > could fix this issue now.
> >
> > diff --git a/tests/nvme/047 b/tests/nvme/047
> > index 6a7599b..8c0a024 100755
> > --- a/tests/nvme/047
> > +++ b/tests/nvme/047
> > @@ -52,6 +52,8 @@ test() {
> > --nr-write-queues 1 \
> > --nr-poll-queues 1 || echo FAIL
> >
> > + nvmedev=$(_find_nvme_dev "${subsys_name}")
> > +
> > _run_fio_rand_io --filename="/dev/${nvmedev}n1" --size="${rand_io_size}"
> >
> > _nvme_disconnect_subsys "${subsys_name}" >> "$FULL" 2>&1
> >
> >
>
> Ah, I overlooked that the test case calls _nvme_connect_subsys twice. Good to
> know that the above changes avoid the failure.
>
> Having said that, the fix above does not look the best. As discussed in another
> e-mail, _find_nvme_dev() just does 1 second wait, and it actually does not check
> readiness of the device. This needs fix. Also I think the check and wait should
> move from _find_nvme_dev()to _nvme_connect_subsys(). Could you try the patch
Yeah, move to _nvme_connect_subsys looks more reasonable.
> below and see if it avoid the failure?
This change works well :)
>
> diff --git a/tests/nvme/rc b/tests/nvme/rc
> index 4f3a994..d09e7b4 100644
> --- a/tests/nvme/rc
> +++ b/tests/nvme/rc
> @@ -425,6 +425,7 @@ _nvme_connect_subsys() {
> local keep_alive_tmo=""
> local reconnect_delay=""
> local ctrl_loss_tmo=""
> + local dev i
>
> while [[ $# -gt 0 ]]; do
> case $1 in
> @@ -529,6 +530,16 @@ _nvme_connect_subsys() {
> fi
>
> nvme connect "${ARGS[@]}" 2> /dev/null
> +
> + dev=$(_find_nvme_dev "$subsysnqn")
> + for ((i = 0; i < 10; i++)); do
> + if [[ -b /dev/${dev}n1 &&
> + -e /sys/block/${dev}n1/uuid &&
> + -e /sys/block/${dev}n1/wwid ]]; then
> + return
> + fi
> + sleep .1
> + done
> }
>
> _nvme_discover() {
> @@ -739,13 +750,6 @@ _find_nvme_dev() {
> subsysnqn="$(cat "/sys/class/nvme/${dev}/subsysnqn")"
> if [[ "$subsysnqn" == "$subsys" ]]; then
> echo "$dev"
> - for ((i = 0; i < 10; i++)); do
> - if [[ -e /sys/block/$dev/uuid &&
> - -e /sys/block/$dev/wwid ]]; then
> - return
> - fi
> - sleep .1
> - done
> fi
> done
> }
>
--
Best Regards,
Yi Zhang
More information about the Linux-nvme
mailing list