summaryrefslogtreecommitdiff
path: root/debian/initramfs/script.local-top
diff options
context:
space:
mode:
authormartin f. krafft <madduck@madduck.net>2008-07-02 15:31:00 +0200
committermartin f. krafft <madduck@madduck.net>2008-07-02 15:31:03 +0200
commitca945353883ffb66d48a727ee65103ab3eb95f4e (patch)
tree037f8de8f0f0db700b4905890bcc956d742c126f /debian/initramfs/script.local-top
parent603a66f79fbe3b32aaafdf80743e54bb58620a8d (diff)
make initramfs script wait for root link
if $ROOT is /dev/disk/by-id/md-*, then we wait up to 10 seconds for it to appear because udev may be slow...
Diffstat (limited to 'debian/initramfs/script.local-top')
-rw-r--r--debian/initramfs/script.local-top29
1 files changed, 25 insertions, 4 deletions
diff --git a/debian/initramfs/script.local-top b/debian/initramfs/script.local-top
index 195feead..e44cecf6 100644
--- a/debian/initramfs/script.local-top
+++ b/debian/initramfs/script.local-top
@@ -22,6 +22,8 @@ esac
. /scripts/functions
+maybe_break pre-mdadm
+
if [ -e /scripts/local-top/md ]; then
log_warning_msg "old md initialisation script found, getting out of its way..."
exit 1
@@ -81,7 +83,7 @@ fi
echo 1 > /sys/module/md_mod/parameters/start_ro
if [ "$MD_DEVS" = all ]; then
-
+
verbose && log_begin_msg "Assembling all MD arrays"
extra_args=''
[ -n "$MD_HOMEHOST" ] && \
@@ -107,8 +109,27 @@ elif [ "$MD_DEVS" != none ]; then
done
fi
-verbose && log_begin_msg "Executing udevtrigger again"
-/sbin/udevtrigger
-verbose && log_end_msg
+maybe_break post-mdadm
+
+case "$ROOT" in
+ /dev/disk/by-id/md-*)
+ MAXWAIT=10
+ if [ ! -L "$ROOT" ]; then
+ verbose && log_begin_msg "Waiting for udev array link to $ROOT "
+ while [ ! -L "$ROOT" ] && [ $MAXWAIT -gt 0 ]; do
+ verbose && echo -n . >&2
+ sleep 1
+ MAXWAIT=$((MAXWAIT - 1))
+ done
+
+ if [ ! -L "$ROOT" ]; then
+ verbose && log_failure_msg "timed out after $MAXWAIT seconds."
+ exit 1
+ else
+ verbose && log_success_msg "udev array link to $ROOT appeared."
+ fi
+ fi
+ ;;
+esac
exit 0