diff options
author | Simon Rettberg | 2018-09-12 13:17:15 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-09-12 13:17:15 +0200 |
commit | 63e4159044f3a101b3ad9c5623da44f6c70af3df (patch) | |
tree | e8f82376d122fbbc0edba51fb77a01b7e3ee5afd | |
parent | [xbox-src] Update version (diff) | |
download | mltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.tar.gz mltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.tar.xz mltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.zip |
[rfs32] setup_partitons: More agressive udev-settle timeout
-rwxr-xr-x | core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions index ca1585bb..44693171 100755 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions @@ -118,17 +118,32 @@ mount_temp_fallback () { return 0 } -udevadm trigger -usleep 20000 #20ms -udevadm settle --timeout 4 -usleep 20000 #20ms +wait_for_udev () { + local upid ctr + ctr=$(( "$1" * 10 )) + if ! [ "$ctr" -gt 0 ]; then # Negation to catch NaN + ctr=1 + fi + udevadm trigger & + usleep 20000 # 20ms + udevadm settle & # --timeout doesn't work reliably, sometimes the process just hangs + upid=$! + while [ "$ctr" -gt 0 ] && [ -d "/proc/$upid" ]; do + usleep 100000 # 100ms + ctr=$(( ctr - 1 )) + done + if [ -d "/proc/$upid" ]; then + kill -9 "$upid" & + fi +} + +wait_for_udev 2 /opt/openslx/sbin/fdisk -l | grep '^/dev/' > "$PARTITION_FILE" if [ ! -s "$PARTITION_FILE" ]; then - udevadm trigger - sleep 3 - udevadm trigger - udevadm settle + udevadm trigger & + sleep 1 + wait_for_udev 3 /opt/openslx/sbin/fdisk -l | grep '^/dev/' > "$PARTITION_FILE" fi |