]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
95nvmf: Fixup FC connections
authorHannes Reinecke <hare@suse.de>
Mon, 28 Sep 2020 11:39:07 +0000 (13:39 +0200)
committerDaniel Molkentin <daniel@molkentin.de>
Fri, 2 Oct 2020 13:55:14 +0000 (15:55 +0200)
D-Bus doesn't run in the initrd, so our usual trick of activating
custom systemd services from udev doesn't work.
So add a rule to create initqueue entries for each possible
connection.

Signed-off-by: Hannes Reinecke <hare@suse.de>
modules.d/95nvmf/95-nvmf-initqueue.rules [new file with mode: 0644]
modules.d/95nvmf/module-setup.sh

diff --git a/modules.d/95nvmf/95-nvmf-initqueue.rules b/modules.d/95nvmf/95-nvmf-initqueue.rules
new file mode 100644 (file)
index 0000000..d26d7b0
--- /dev/null
@@ -0,0 +1,10 @@
+#
+# nvmf-initqueue.rules
+#
+# D-Bus doesn't run in the initrd, which means that we cannot use our
+# usual trick of starting custom systemd services.
+# So use a rule to create initqueue entries instead.
+
+ACTION=="change", SUBSYSTEM=="fc", ENV{FC_EVENT}=="nvmediscovery", \
+      ENV{NVMEFC_HOST_TRADDR}=="*", ENV{NVMEFC_TRADDR}=="*", \
+      RUN+="/sbin/initqueue --onetime --unique --name nvmf-connect-$env{NVMEFC_TRADDR}-$env{NVMEFC_HOST_TRADDR} /usr/sbin/nvme connect-all --transport=fc --traddr=$env{NVMEFC_TRADDR} --host-traddr=$env{NVMEFC_HOST_TRADDR}"
index 92400c212a9bf07c8bc6c9f06a9b2875331438d2..501ba8dd7b321db0511edf6a7761056ef0dc67c3 100755 (executable)
@@ -110,12 +110,9 @@ install() {
     inst_multiple ip sed
 
     inst_multiple nvme
-    inst_multiple -o \
-        "$systemdsystemunitdir/nvm*-connect@.service" \
-        "$systemdsystemunitdir/nvm*-connect.target"
     inst_hook cmdline 99 "$moddir/parse-nvmf-boot-connections.sh"
     inst_simple "/etc/nvme/discovery.conf"
-    inst_rules /usr/lib/udev/rules.d/70-nvm*-autoconnect.rules
     inst_rules /usr/lib/udev/rules.d/71-nvmf-iopolicy-netapp.rules
+    inst_rules "$moddir/95-nvmf-initqueue.rules"
     dracut_need_initqueue
 }