[PATCH nvme-cli] udev: re-read the discovery log page when a discovery controller reconnected

Sagi Grimberg sagi at grimberg.me
Mon Jun 27 04:31:30 PDT 2022


>> When using persistent discovery controllers, if the discovery
>> controller loses connectivity and manage to reconnect after a while,
>> we need to retrieve again the discovery log page in order to learn
>> about possible changes that may have occurred during this time as
>> discovery log change events were lost.
>>
>> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
>> ---
>>   nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in | 7 +++++++
>>   1 file changed, 7 insertions(+)
>>
>> diff --git a/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in b/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
>> index 434cc080ffe3..245e0d0dbad0 100644
>> --- a/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
>> +++ b/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
>> @@ -17,3 +17,10 @@ ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_AEN}=="0x70f002",\
>>   ACTION=="change", SUBSYSTEM=="fc", ENV{FC_EVENT}=="nvmediscovery", \
>>     ENV{NVMEFC_HOST_TRADDR}=="*",  ENV{NVMEFC_TRADDR}=="*", \
>>     RUN+="@SYSTEMCTL@ --no-block start nvmf-connect at --device=none\t--transport=fc\t--traddr=$env{NVMEFC_TRADDR}\t--trsvcid=none\t--host-traddr=$env{NVMEFC_HOST_TRADDR}.service"
>> +
>> +# A discovery controller just (re)connected, re-read the discovery log change to
>> +# check if there were any changes since it was last connected.
>> +ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_EVENT}=="connected", ATTR{cntrltype}=="discovery", \
>> +  ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \
>> +  ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", \
>> +  RUN+="@SYSTEMCTL@ --no-block start nvmf-connect at --device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}.service"
> 
> Stupid question, but when we issue the initial 'nvme discover' wouldn't
> we run this rule as well? And if so, is this okay?

It will... and it is redundant, but don't think its a big deal because 
at worst we retrieve the log page and try to connect twice, one of these
will see EALREADY...



More information about the Linux-nvme mailing list