summaryrefslogtreecommitdiffstats
path: root/modules.d
diff options
context:
space:
mode:
authorSimon Rettberg2025-03-11 12:27:07 +0100
committerSimon Rettberg2025-03-11 12:27:07 +0100
commit430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a (patch)
tree1e70542369c8fc1d6dd178e71e7b815ab5e52dce /modules.d
parent[slx-network] Make scripts much more verbose for better profiling (diff)
downloadsystemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.tar.gz
systemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.tar.xz
systemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.zip
[dnbd3-rootfs] Improve logging
Diffstat (limited to 'modules.d')
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh46
1 files changed, 28 insertions, 18 deletions
diff --git a/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh b/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
index 5051375c..e78a007a 100755
--- a/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
+++ b/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
@@ -10,6 +10,7 @@ export LD_LIBRARY_PATH="/usr/local/lib"
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
@@ -20,7 +21,8 @@ settle() {
while (( --rem > 0 )) && kill -0 "$pid"; do
sleep 1
done
- fi >&2
+ fi
+ echo "settle: udev done"
}
# all outputs are redirected to stderr, since this functions should
@@ -28,28 +30,35 @@ settle() {
container_unpack_raw() {
local in_device="$1"
local out_device="$(losetup -f)"
+ echo "raw: Preparing to access image at '$in_device' via '$out_device'"
+ if ! modprobe "loop"; then
+ echo "raw: Failed to load kernel module: loop"
+ fi
if ! losetup "$out_device" "$in_device" --partscan; then
- echo "Failed to attach '$in_device' to '$out_device'."
+ echo "raw: Failed to attach '$in_device' to '$out_device'."
return 1
- fi >&2
+ fi
settle
- echo "$out_device"
+ read_only_device="$out_device"
+ return 0
}
container_unpack_xloop() {
local in_device="$1"
local out_device="$(xlosetup -f)"
+ echo "xloop: Preparing to access image at '$in_device' via '$out_device'"
for kmod in xloop xloop_file_fmt_qcow xloop_file_fmt_raw; do
if ! modprobe "${kmod}"; then
- echo "Failed to load kernel module: $kmod"
+ echo "xloop: Failed to load kernel module: $kmod"
fi
- done >&2
+ done
if ! xlosetup -r -t QCOW "$out_device" "$in_device" --partscan; then
- echo "Failed to attach '$in_device' to '$out_device'."
+ echo "xloop: Failed to attach '$in_device' to '$out_device'."
return 1
- fi >&2
+ fi
settle
- echo "$out_device"
+ read_only_device="$out_device"
+ return 0
}
# endregion
@@ -71,6 +80,8 @@ if [ -n "$KCL_DNBD3_RID" ]; then
SLX_DNBD3_RID="$KCL_DNBD3_RID"
echo "SLX_DNBD3_RID='$SLX_DNBD3_RID'" >> /etc/openslx
fi
+unset _dnbd3_client_additional_args
+declare -a _dnbd3_client_additional_args
if [ -n "$SLX_DNBD3_RID" ]; then
_dnbd3_client_additional_args=("--rid" "$SLX_DNBD3_RID")
fi
@@ -87,12 +98,13 @@ for try in {1..5} FINAL; do
"Check if the image exists on one of the servers" \
"and if any is reachable from this client."
fi
- echo "dnbd3-connect: Try ($try/5), trying hosts '$SLX_DNBD3_SERVERS'."
+ echo "dnbd3-connect: Try ($try/5), trying hosts '$SLX_DNBD3_SERVERS'"
if dnbd3-client \
--host "$SLX_DNBD3_SERVERS" \
--image "$SLX_DNBD3_IMAGE" \
--device "$_dnbd3_dev" \
"${_dnbd3_client_additional_args[@]}"; then
+ echo "dnbd3-connect: Connected"
break
fi
sleep 1
@@ -113,12 +125,10 @@ if [ -z "$SLX_QCOW_HANDLER" ]; then
echo "SLX_QCOW_HANDLER='$SLX_QCOW_HANDLER'" >> /etc/openslx
fi
if [[ $SLX_QCOW_HANDLER =~ ^(kernel|xloop)$ ]]; then
- echo "Trying to unpack image from dnbd3 via xloop"
- read_only_device="$(container_unpack_xloop "$_dnbd3_dev")"
+ container_unpack_xloop "$_dnbd3_dev"
fi
if [ -z "$read_only_device" ]; then
- echo "Using raw image from dnbd3 device"
- read_only_device="$(container_unpack_raw "$_dnbd3_dev")"
+ container_unpack_raw "$_dnbd3_dev"
fi
# Fail fast if unpacking dnbd3 image failed.
@@ -168,7 +178,7 @@ fi
if [ -z "$read_only_partition" ]; then
# Do a scan
- echo "Don't know which partition to use, trying all candidates (${parts[*]})"
+ echo "Warning: Don't know which partition to use, trying all candidates (${parts[*]})" >&2
p="/tmp/mounttest"
mkdir -p "$p"
for part in "${parts[@]}"; do
@@ -183,16 +193,16 @@ if [ -z "$read_only_partition" ]; then
umount -lf "$p"
fi
done
- echo "***** Please fix this by either specifying SLX_SYSTEM_PARTITION_IDENTIFIER or labeling your root partition SLX_SYS *****"
+ echo "Warning: ***** Please fix this by either specifying SLX_SYSTEM_PARTITION_IDENTIFIER or labeling your root partition SLX_SYS *****" >&2
fi
# endregion
if [ -z "$read_only_partition" ]; then
- echo "Failed to find bootable partition"
+ echo "Error: Failed to find bootable partition"
exit 1
fi
if ! [ -b "$read_only_partition" ]; then
- echo "Bootable partition $read_only_partition does not exist, or is not a block device"
+ echo "Error: Bootable partition $read_only_partition does not exist, or is not a block device"
exit 1
fi