[PATCH 07/13] libmultipath: Add delayed removal support
John Garry
john.g.garry at oracle.com
Fri Apr 10 01:55:20 PDT 2026
On 10/04/2026 08:06, Nilay Shroff wrote:
>> # Part b: Ensure writes work for intermittent disconnect
>> _nvme_connect_subsys
>>
>> nvmedev=$(_find_nvme_dev "${def_subsysnqn}")
>> ns=$(_find_nvme_ns "${def_subsys_uuid}")
>> echo 10 > "/sys/block/"$ns"/delayed_removal_secs"
>> bytes_written=$(run_xfs_io_pwritev2 /dev/"$ns" 4096)
>> if [ "$bytes_written" != 4096 ]; then
>> echo "could not write successfully initially"
>> fi
>> sleep 1
>> _nvme_disconnect_ctrl "${nvmedev}"
>> sleep 1
>> ns=$(_find_nvme_ns "${def_subsys_uuid}")
>> if [[ "${ns}" = "" ]]; then
>> echo "could not find ns after disconnect"
>> fi
>> _delayed_nvme_reconnect_ctrl &
>> sleep 1
>> bytes_written=$(run_xfs_io_pwritev2 /dev/"$ns" 4096)
>> if [ "$bytes_written" != 4096 ]; then
>> echo "could not write successfully with reconnect"
>> fi
>
> It seems there may be a race here if we attempt to write to $ns before
> the reconnect has completed in _delayed_nvme_reconnect_ctrl.
>
> If the intention is simply to verify that the controller reconnect occurs
> within the delayed removal window and test pwrite,
Not exactly. I want to verify that if I write between the disconnect and
the reconnect, then we write succeeds.
> then it may be
> sufficient
> to:
> - perform the reconnect, and
> - then validate the write (pwrite) afterwards.
I think that this is something subtly different.
For your revised test, if we reconnect, we always expect the subsequent
write to succeed even without the delayed removal, so I am not sure what
we achieve.
>
> In that case, we could either:
> - run _delayed_nvme_reconnect_ctrl in the foreground, or
> - open-code the reconnect directly in the script before issuing the write.
>
How would that open-code reconnect look? I was just using the subsystem
connect, which I think is not optimal.
Thanks,
John
More information about the Linux-nvme
mailing list