summaryrefslogtreecommitdiffstats
path: root/core/rootfs/rootfs-stage32/data
diff options
context:
space:
mode:
authorSimon Rettberg2018-09-12 13:17:15 +0200
committerSimon Rettberg2018-09-12 13:17:15 +0200
commit63e4159044f3a101b3ad9c5623da44f6c70af3df (patch)
treee8f82376d122fbbc0edba51fb77a01b7e3ee5afd /core/rootfs/rootfs-stage32/data
parent[xbox-src] Update version (diff)
downloadmltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.tar.gz
mltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.tar.xz
mltk-63e4159044f3a101b3ad9c5623da44f6c70af3df.zip
[rfs32] setup_partitons: More agressive udev-settle timeout
Diffstat (limited to 'core/rootfs/rootfs-stage32/data')
-rwxr-xr-xcore/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions31
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