diff options
| author | Simon Rettberg | 2025-03-11 12:27:07 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2025-03-11 12:27:07 +0100 |
| commit | 430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a (patch) | |
| tree | 1e70542369c8fc1d6dd178e71e7b815ab5e52dce /modules.d | |
| parent | [slx-network] Make scripts much more verbose for better profiling (diff) | |
| download | systemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.tar.gz systemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.tar.xz systemd-init-430d98fa9bb6d70cf7a8422e2d39ebfb3b116b5a.zip | |
[dnbd3-rootfs] Improve logging
Diffstat (limited to 'modules.d')
| -rwxr-xr-x | modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh | 46 |
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 |
