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>
--- /dev/null
+#
+# 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}"
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
}