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