summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin f. krafft <madduck@debian.org>2008-07-02 16:50:15 +0200
committermaximilian attems <maks@debian.org>2008-07-03 00:19:16 +0200
commitfc24059a296ecba82475debde0eff2330c92a2cd (patch)
treec7f6c56247a7e2346eeab84645e709798e77d9b8
parent7e5cad4b55f4e3ca20bb0f4dbaeaf3d6b9e7b8d7 (diff)
downloadinitramfs-tools-fc24059a296ecba82475debde0eff2330c92a2cd.tar.gz
initramfs-tools-fc24059a296ecba82475debde0eff2330c92a2cd.zip
Wait for udevsettle after $BOOT-top scripts ran
udev may be busy creating links for the root device by the time mountroot is called. udevsettle makes sure these are processed. I thus call udevsettle with a timeout of 10 seconds after the $BOOT-top scripts have run and before the ROOTDELAY hack kicks in. I thought about doing this with a local-top script instead, but there is no way to ensure that it'll run last; cryptsetup uses a hack to make sure it runs last, if we also use the same hack, there'll be a dependency loop. Signed-off-by: martin f. krafft <madduck@debian.org> Signed-off-by: maximilian attems <maks@debian.org>
-rw-r--r--scripts/functions9
-rw-r--r--scripts/local2
-rw-r--r--scripts/nfs2
3 files changed, 13 insertions, 0 deletions
diff --git a/scripts/functions b/scripts/functions
index d36884c..558f521 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -313,3 +313,12 @@ configure_networking()
. /tmp/net-*.conf
fi
}
+
+wait_for_udev()
+{
+ if [ -x "$(command -v udevsettle)" ]; then
+ [ "$quiet" != "y" ] && log_begin_msg "Waiting for udev to process events"
+ udevsettle ${1:+--timeout=$1}
+ [ "$quiet" != "y" ] && log_end_msg
+ fi
+}
diff --git a/scripts/local b/scripts/local
index d28917b..dc0745d 100644
--- a/scripts/local
+++ b/scripts/local
@@ -31,6 +31,8 @@ mountroot ()
run_scripts /scripts/local-top
[ "$quiet" != "y" ] && log_end_msg
+ wait_for_udev 10
+
# If the root device hasn't shown up yet, give it a little while
# to deal with removable devices
if [ ! -e "${ROOT}" ] || ! $(get_fstype "${ROOT}" >/dev/null); then
diff --git a/scripts/nfs b/scripts/nfs
index b9c2522..435d2d0 100644
--- a/scripts/nfs
+++ b/scripts/nfs
@@ -59,6 +59,8 @@ mountroot()
# For DHCP
modprobe af_packet
+ wait_for_udev 10
+
# Default delay is around 180s
# FIXME: add usplash_write info
if [ -z "${ROOTDELAY}" ]; then