]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(iscsi): add iscsid.service requirements
authorHarald Hoyer <harald@redhat.com>
Mon, 26 Apr 2021 12:10:37 +0000 (14:10 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Mon, 26 Apr 2021 13:34:24 +0000 (15:34 +0200)
Since Fedora 34, iscsid.service requires:
- iscsi-init.service
- iscsi-shutdown.service
- a non-empty /var/lib/iscsi/nodes/.dracut

modules.d/95iscsi/module-setup.sh

index 16c99f7a402b33880becc288f02968c00604336d..88d6c92baea4691188f294809ee2bbfe3078e555 100755 (executable)
@@ -223,6 +223,7 @@ install() {
     else
         inst_multiple -o \
             "$systemdsystemunitdir"/iscsi.service \
+            "$systemdsystemunitdir"/iscsi-init.service \
             "$systemdsystemunitdir"/iscsid.service \
             "$systemdsystemunitdir"/iscsid.socket \
             "$systemdsystemunitdir"/iscsiuio.service \
@@ -236,38 +237,57 @@ install() {
         done
 
         mkdir -p "${initdir}/$systemdsystemunitdir/iscsid.service.d"
-        (
+        {
             echo "[Unit]"
             echo "DefaultDependencies=no"
             echo "Conflicts=shutdown.target"
             echo "Before=shutdown.target"
-        ) > "${initdir}/$systemdsystemunitdir/iscsid.service.d/dracut.conf"
+        } > "${initdir}/$systemdsystemunitdir/iscsid.service.d/dracut.conf"
 
         mkdir -p "${initdir}/$systemdsystemunitdir/iscsid.socket.d"
-        (
+        {
             echo "[Unit]"
             echo "DefaultDependencies=no"
             echo "Conflicts=shutdown.target"
             echo "Before=shutdown.target sockets.target"
-        ) > "${initdir}/$systemdsystemunitdir/iscsid.socket.d/dracut.conf"
+        } > "${initdir}/$systemdsystemunitdir/iscsid.socket.d/dracut.conf"
 
         mkdir -p "${initdir}/$systemdsystemunitdir/iscsiuio.service.d"
-        (
+        {
             echo "[Unit]"
             echo "DefaultDependencies=no"
             echo "Conflicts=shutdown.target"
             echo "Before=shutdown.target"
-        ) > "${initdir}/$systemdsystemunitdir/iscsiuio.service.d/dracut.conf"
+        } > "${initdir}/$systemdsystemunitdir/iscsiuio.service.d/dracut.conf"
 
         mkdir -p "${initdir}/$systemdsystemunitdir/iscsiuio.socket.d"
-        (
+        {
             echo "[Unit]"
             echo "DefaultDependencies=no"
             echo "Conflicts=shutdown.target"
             echo "Before=shutdown.target sockets.target"
-        ) > "${initdir}/$systemdsystemunitdir/iscsiuio.socket.d/dracut.conf"
-
+        } > "${initdir}/$systemdsystemunitdir/iscsiuio.socket.d/dracut.conf"
+
+        # Fedora 34 iscsid requires iscsi-shutdown.service
+        # which would terminate all iSCSI connections on switch root
+        cat > "${initdir}/$systemdsystemunitdir/iscsi-shutdown.service" << EOF
+[Unit]
+Description=Dummy iscsi-shutdown.service for the initrd
+Documentation=man:iscsid(8) man:iscsiadm(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
+Before=remote-fs-pre.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=false
+ExecStart=-/usr/bin/true
+EOF
     fi
     inst_dir /var/lib/iscsi
+    mkdir -p "${initdir}/var/lib/iscsi/nodes"
+    # Fedora 34 iscsid wants a non-empty /var/lib/iscsi/nodes directory
+    : > "${initdir}/var/lib/iscsi/nodes/.dracut"
     dracut_need_initqueue
 }