[PATCH blktests v2 1/2] nvme/rc: fix nvme device readiness check after _nvme_connect_subsys

Shinichiro Kawasaki shinichiro.kawasaki at wdc.com
Thu Aug 17 03:50:23 PDT 2023


On Aug 17, 2023 / 11:29, Sagi Grimberg wrote:
> On 8/17/23 10:30, Shin'ichiro Kawasaki wrote:
[...]
> > diff --git a/tests/nvme/rc b/tests/nvme/rc
> > index 0b964e9..797483e 100644
> > --- a/tests/nvme/rc
> > +++ b/tests/nvme/rc
> > @@ -428,6 +428,8 @@ _nvme_connect_subsys() {
> >   	local keep_alive_tmo=""
> >   	local reconnect_delay=""
> >   	local ctrl_loss_tmo=""
> > +	local wait_for="ns"
> > +	local dev i
> >   	while [[ $# -gt 0 ]]; do
> >   		case $1 in
> > @@ -483,6 +485,10 @@ _nvme_connect_subsys() {
> >   				ctrl_loss_tmo="$2"
> >   				shift 2
> >   				;;
> > +			--wait-for)
> > +				wait_for="$2"
> > +				shift 2
> > +				;;
> 
> I think that it would make better since to reverse the polarity
> here.
> 
> connect always wait, and tests that actually want to
> do some fast stress will choose --nowait.

Agreed. Will reflect in v3.

> 
> >   			*)
> >   				positional_args+=("$1")
> >   				shift
> > @@ -532,6 +538,21 @@ _nvme_connect_subsys() {
> >   	fi
> >   	nvme connect "${ARGS[@]}" 2> /dev/null
> > +
> > +	# Wait until device file and uuid/wwid sysfs attributes get ready for
> > +	# namespace 1.
> > +	if [[ ${wait_for} == ns ]]; then
> > +		udevadm settle
> > +		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
> 
> What happens if the subsystem does not have any namespaces?
> Or what about other namesapces?
> 
> Won't it make more sense to inspect the subsys for
> expected ns and wait for all?

I think such check is possible. I assume that we can refer
/sys/kernel/config/nvmet/subsystems/namespaces to get the expected ns and check
them all. Will cook something for v3.


More information about the Linux-nvme mailing list