summaryrefslogtreecommitdiffstats
path: root/modules.d
diff options
context:
space:
mode:
authorSimon Rettberg2025-04-09 16:40:57 +0200
committerSimon Rettberg2025-04-09 16:40:57 +0200
commit7e55d9e6bc63fe6e7821ff7e55ef14f701def14b (patch)
tree5f1e18d47a6e715be63be0630479507cd00f7d77 /modules.d
parentFix dumb typo (diff)
downloadsystemd-init-7e55d9e6bc63fe6e7821ff7e55ef14f701def14b.tar.gz
systemd-init-7e55d9e6bc63fe6e7821ff7e55ef14f701def14b.tar.xz
systemd-init-7e55d9e6bc63fe6e7821ff7e55ef14f701def14b.zip
[slx-dmsetup] Tweak service ordering, wait for HDDs
Diffstat (limited to 'modules.d')
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/s3-connect-image.sh20
-rwxr-xr-xmodules.d/slx-dmsetup/hooks/s3-mount-swap.sh22
-rwxr-xr-xmodules.d/slx-dmsetup/module-setup.sh5
3 files changed, 24 insertions, 23 deletions
diff --git a/modules.d/dnbd3-rootfs/hooks/s3-connect-image.sh b/modules.d/dnbd3-rootfs/hooks/s3-connect-image.sh
index 835a5613..88b7b934 100755
--- a/modules.d/dnbd3-rootfs/hooks/s3-connect-image.sh
+++ b/modules.d/dnbd3-rootfs/hooks/s3-connect-image.sh
@@ -9,22 +9,6 @@ export LD_LIBRARY_PATH="/usr/local/lib"
# hardcode dnbd device path
declare -rg _dnbd3_dev="/dev/dnbd0"
-settle() {
- echo "settle: Waiting for udev"
- if command -v timeout &> /dev/null; then
- timeout -s 9 15 udevadm settle -t 10
- else
- local pid rem
- udevadm settle -t 10 &
- pid=$!
- rem=15
- while (( --rem > 0 )) && kill -0 "$pid"; do
- sleep 1
- done
- fi
- echo "settle: udev done"
-}
-
# all outputs are redirected to stderr, since this functions should
# only echo the path to the unpacked container to stdout.
container_unpack_raw() {
@@ -38,7 +22,6 @@ container_unpack_raw() {
echo "raw: Failed to attach '$in_device' to '$out_device'."
return 1
fi
- settle
read_only_device="$out_device"
return 0
}
@@ -56,7 +39,6 @@ container_unpack_xloop() {
echo "xloop: Failed to attach '$in_device' to '$out_device'."
return 1
fi
- settle
read_only_device="$out_device"
return 0
}
@@ -209,6 +191,4 @@ fi
echo "Using read-only partition: $read_only_partition"
echo "$read_only_partition" > "/.read_only_device"
-settle
-
exit 0
diff --git a/modules.d/slx-dmsetup/hooks/s3-mount-swap.sh b/modules.d/slx-dmsetup/hooks/s3-mount-swap.sh
index 0384bcf4..e9370b2d 100755
--- a/modules.d/slx-dmsetup/hooks/s3-mount-swap.sh
+++ b/modules.d/slx-dmsetup/hooks/s3-mount-swap.sh
@@ -2,9 +2,29 @@
. slx-tools
+settle() {
+ echo "settle: Waiting for udev"
+ if command -v timeout &> /dev/null; then
+ timeout -s 9 "$2" udevadm settle -t "$1"
+ else
+ local pid rem
+ udevadm settle -t "$1" &
+ pid=$!
+ rem="$2"
+ while (( --rem > 0 )) && kill -0 "$pid"; do
+ sleep 1
+ done
+ fi
+ echo "settle: udev done"
+}
+
+settle 3 4
+
for part in $( dev_find_partitions "82" "0657fd6d-a4ab-43c4-84e5-0933c84b4f4f" ); do
dev_swap_version "$part" &> /dev/null || continue
- swapon "$part"
+ swapon "$part" &
done
+wait
+
exit 0
diff --git a/modules.d/slx-dmsetup/module-setup.sh b/modules.d/slx-dmsetup/module-setup.sh
index e513ca6f..538b050e 100755
--- a/modules.d/slx-dmsetup/module-setup.sh
+++ b/modules.d/slx-dmsetup/module-setup.sh
@@ -26,10 +26,11 @@ install() {
--after "s3-fetch-config.service"
slx_service "s3-mount-swap" "Mount existing swap partitions" \
- --before "s3-cow-setup"
+ --before "s3-cow-setup.service" \
+ --wafter "systemd-udevd.service"
slx_service "s3-prepare-rw-layer" "Prepare suitable partitions for use as write layer" \
- --before "s3-cow-setup"
+ --before "s3-cow-setup.service"
slx_service "s3-scan-id44" "Scan for partitions marked as scratch space (ID44)" \
--before "s3-prepare-rw-layer.service" \