]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
test: use EXIT trap to poweroff client rootfs
authorBenjamin Drung <benjamin.drung@canonical.com>
Mon, 26 Jan 2026 21:43:17 +0000 (22:43 +0100)
committerLaszlo <laszlo.gombos@gmail.com>
Mon, 26 Jan 2026 22:13:51 +0000 (17:13 -0500)
Use an trap on `EXIT` to poweroff the client rootfs. This will cover all
kinds of failure and allows using `set -eu` in the init script.

test/TEST-60-NFS/client-init.sh
test/TEST-70-ISCSI/client-init.sh
test/TEST-71-ISCSI-MULTI/client-init.sh
test/TEST-72-NBD/client-init.sh
test/modules.d/70test-root/test-init.sh

index d3fddbab79e135ffb82484ad551b932f0c601a28..5220edbcf5f061f4767aea7b34c19dcba3d282cd 100755 (executable)
@@ -4,6 +4,21 @@
 . /lib/url-lib.sh
 
 export PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# shellcheck disable=SC2317,SC2329  # called via EXIT trap
+_poweroff() {
+    echo "Powering down."
+
+    if [ -d /usr/lib/systemd/system ]; then
+        # graceful poweroff
+        systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
+    else
+        # force immediate poweroff
+        poweroff -f
+    fi
+}
+
+trap _poweroff EXIT
 exec > /dev/console 2>&1
 
 echo "made it to the NFS client rootfs!"
@@ -43,13 +58,3 @@ fi
 : > /dev/watchdog
 
 sync /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker2
-
-echo "Powering down."
-
-if [ -d /usr/lib/systemd/system ]; then
-    # graceful poweroff
-    systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
-else
-    # force immediate poweroff
-    poweroff -f
-fi
index 76f297dbc82e7123afd7c127178d8c4ff02d2f02..84d1d49fedf6c9918bfaef48a919280396555d60 100755 (executable)
@@ -1,6 +1,21 @@
 #!/bin/sh
 
 export PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# shellcheck disable=SC2317,SC2329  # called via EXIT trap
+_poweroff() {
+    echo "Powering down."
+
+    if [ -d /usr/lib/systemd/system ]; then
+        # graceful poweroff
+        systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
+    else
+        # force immediate poweroff
+        poweroff -f
+    fi
+}
+
+trap _poweroff EXIT
 exec > /dev/console 2>&1
 
 echo "made it to the iSCSI client rootfs!"
@@ -11,13 +26,3 @@ while read -r dev _ fstype opts rest || [ -n "$dev" ]; do
 done < /proc/mounts
 
 sync /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker
-
-echo "Powering down."
-
-if [ -d /usr/lib/systemd/system ]; then
-    # graceful poweroff
-    systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
-else
-    # force immediate poweroff
-    poweroff -f
-fi
index 3c4386df1657817302fa95f7e8885f4d7863ed15..2dab6f00dcd8577cdaa416500c865b4eb02ee976 100755 (executable)
@@ -1,6 +1,21 @@
 #!/bin/sh
 
 export PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# shellcheck disable=SC2317,SC2329  # called via EXIT trap
+_poweroff() {
+    echo "Powering down."
+
+    if [ -d /usr/lib/systemd/system ]; then
+        # graceful poweroff
+        systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
+    else
+        # force immediate poweroff
+        poweroff -f
+    fi
+}
+
+trap _poweroff EXIT
 exec > /dev/console 2>&1
 
 echo "made it to the iSCSI multi client rootfs!"
@@ -11,13 +26,3 @@ while read -r dev _ fstype opts rest || [ -n "$dev" ]; do
 done < /proc/mounts
 
 sync /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker
-
-echo "Powering down."
-
-if [ -d /usr/lib/systemd/system ]; then
-    # graceful poweroff
-    systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
-else
-    # force immediate poweroff
-    poweroff -f
-fi
index 9dc5106202e2f2222a8791439d8befa024ad2043..f061527a7d391921c6ab149228ba3b9e696093a4 100755 (executable)
@@ -2,6 +2,21 @@
 : > /dev/watchdog
 
 export PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# shellcheck disable=SC2317,SC2329  # called via EXIT trap
+_poweroff() {
+    echo "Powering down."
+
+    if [ -d /usr/lib/systemd/system ]; then
+        # graceful poweroff
+        systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
+    else
+        # force immediate poweroff
+        poweroff -f
+    fi
+}
+
+trap _poweroff EXIT
 exec > /dev/console 2>&1
 echo "made it to the NBD client rootfs!"
 
@@ -16,13 +31,3 @@ done < /proc/mounts
 mount -n -o remount,ro /
 
 sync /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker
-
-echo "Powering down."
-
-if [ -d /usr/lib/systemd/system ]; then
-    # graceful poweroff
-    systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
-else
-    # force immediate poweroff
-    poweroff -f
-fi
index bb0bb53a00f5d46ae015128e87e1de9e365897af..76d8ab79e8746fc2d6f3165b9a383234d1af71aa 100755 (executable)
@@ -2,6 +2,21 @@
 
 export PATH=/usr/sbin:/usr/bin:/sbin:/bin
 
+# shellcheck disable=SC2317,SC2329  # called via EXIT trap
+_poweroff() {
+    echo "Powering down."
+
+    if [ -d /usr/lib/systemd/system ]; then
+        # graceful poweroff
+        systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
+    else
+        # force immediate poweroff
+        poweroff -f
+    fi
+}
+
+trap _poweroff EXIT
+
 [ -e /proc/self/mounts ] \
     || (mkdir -p /proc && mount -t proc -o nosuid,noexec,nodev proc /proc)
 
@@ -37,13 +52,3 @@ else
     sync /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_marker
     echo "All OK"
 fi
-
-echo "Powering down."
-
-if [ -d /usr/lib/systemd/system ]; then
-    # graceful poweroff
-    systemctl start poweroff.target --job-mode=replace-irreversibly --no-block
-else
-    # force immediate poweroff
-    poweroff -f
-fi