martin f. krafft: make initramfs script wait for root link
Martin F. Krafft
madduck at alioth.debian.org
Wed Jul 2 15:04:07 UTC 2008
Module: mdadm
Branch: master
Commit: ca945353883ffb66d48a727ee65103ab3eb95f4e
URL: http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=ca945353883ffb66d48a727ee65103ab3eb95f4e
Author: martin f. krafft <madduck at madduck.net>
Date: Wed Jul 2 15:31:00 2008 +0200
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...
---
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 195feea..e44cecf 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
More information about the pkg-mdadm-commits
mailing list