diff options
author | martin f. krafft <madduck@madduck.net> | 2008-07-02 15:31:00 +0200 |
---|---|---|
committer | martin f. krafft <madduck@madduck.net> | 2008-07-02 15:31:03 +0200 |
commit | ca945353883ffb66d48a727ee65103ab3eb95f4e (patch) | |
tree | 037f8de8f0f0db700b4905890bcc956d742c126f /debian/initramfs/script.local-top | |
parent | 603a66f79fbe3b32aaafdf80743e54bb58620a8d (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-top | 29 |
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 |