57 lines
3.7 KiB
Diff
57 lines
3.7 KiB
Diff
|
From 7723f827e8165652a4a18844114004d78ac411df Mon Sep 17 00:00:00 2001
|
||
|
From: Caleb Sander <csander@purestorage.com>
|
||
|
Date: Fri, 12 May 2023 13:41:06 -0600
|
||
|
Subject: [PATCH] nvmf-autoconnect: restart service to avoid dropping AEN
|
||
|
Content-type: text/plain
|
||
|
|
||
|
If another discovery log page change AEN is received while the
|
||
|
autoconnect service is already running for a previous AEN,
|
||
|
the autoconnect service is not being relaunched.
|
||
|
For example, if some of the entries in the log page are not reachable,
|
||
|
attempting to connect to them may take a long time before timing out,
|
||
|
so AENs received while waiting for the connections have no effect.
|
||
|
The AEN is effectively dropped: we ignore the new discovery log entries
|
||
|
and worse, the controller won't send more AENs because it's waiting
|
||
|
for the log page to be fetched in response to the previous AEN.
|
||
|
|
||
|
Use systemctl restart instead of systemctl start
|
||
|
to ensure nvme connect-all is run in response to each AEN.
|
||
|
If a previous instance of the service is already running,
|
||
|
it will be interrupted and the new log page will be fetched.
|
||
|
|
||
|
Fixes: 391d3b12248a ("nvme-cli: nvmf auto-connect scripts")
|
||
|
Signed-off-by: Caleb Sander <csander@purestorage.com>
|
||
|
---
|
||
|
nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in | 6 +++---
|
||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in b/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
|
||
|
index e751ee09..3eca6dfe 100644
|
||
|
--- a/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
|
||
|
+++ b/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in
|
||
|
@@ -15,18 +15,18 @@ ENV{NVME_HOST_IFACE}=="", ENV{NVME_HOST_IFACE}="none"
|
||
|
ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_AEN}=="0x70f002",\
|
||
|
ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \
|
||
|
ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", ENV{NVME_HOST_IFACE}=="*", \
|
||
|
- RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"
|
||
|
+ RUN+="@SYSTEMCTL@ --no-block restart nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"
|
||
|
|
||
|
# nvme-fc transport generated events (old-style for compatibility)
|
||
|
ACTION=="change", SUBSYSTEM=="fc", ENV{FC_EVENT}=="nvmediscovery", \
|
||
|
ENV{NVMEFC_HOST_TRADDR}=="*", ENV{NVMEFC_TRADDR}=="*", \
|
||
|
- RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=none\t--transport=fc\t--traddr=$env{NVMEFC_TRADDR}\t--trsvcid=none\t--host-traddr=$env{NVMEFC_HOST_TRADDR}.service"
|
||
|
+ RUN+="@SYSTEMCTL@ --no-block restart nvmf-connect@--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}=="rediscover", ATTR{cntrltype}=="discovery", \
|
||
|
ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \
|
||
|
ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", ENV{NVME_HOST_IFACE}=="*", \
|
||
|
- RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"
|
||
|
+ RUN+="@SYSTEMCTL@ --no-block restart nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"
|
||
|
|
||
|
LABEL="autoconnect_end"
|
||
|
--
|
||
|
2.39.3
|
||
|
|