summaryrefslogtreecommitdiff
path: root/debian/initramfs/script.local-top
diff options
context:
space:
mode:
authorMichael Tokarev <mjt@tls.msk.ru>2014-12-20 08:48:44 +0000
committerMichael Tokarev <mjt@tls.msk.ru>2014-12-20 08:48:44 +0000
commit489bea7ee8e1dbecfa517b8415568044ab57c73a (patch)
tree44d4878d4c7da3f4908ea9a765ef9b8f9c141756 /debian/initramfs/script.local-top
mdadm (3.3.2-5) unstable; urgency=medium
* use-tempnode-not-devnode.patch: change udev rules file to use $tempnode which works both on wheezy and jessie udev, instead of $devnode which only works in jessie. At this stage it is better to make rules file compatible with old version instead of adding versioned dependency. Should be removed for jessie+1. (Closes: #770883) * fix Closes: list in previous entry (Closes: #771852) # imported from the archive
Diffstat (limited to 'debian/initramfs/script.local-top')
-rw-r--r--debian/initramfs/script.local-top101
1 files changed, 101 insertions, 0 deletions
diff --git a/debian/initramfs/script.local-top b/debian/initramfs/script.local-top
new file mode 100644
index 00000000..9450bb72
--- /dev/null
+++ b/debian/initramfs/script.local-top
@@ -0,0 +1,101 @@
+#!/bin/sh
+#
+# Copyright © 2006-2008 Martin F. Krafft <madduck@debian.org>,
+# 2012 Michael Tokarev <mjt@tls.msk.ru>
+# based on the scripts in the initramfs-tools package.
+# released under the terms of the Artistic Licence.
+#
+set -eu
+
+case ${1:-} in
+ prereqs) echo "multipath"; exit 0;;
+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 0
+fi
+
+MDADM=/sbin/mdadm
+[ -x "$MDADM" ] || exit 0
+
+verbose()
+{
+ case "$quiet" in y*|Y*|1|t*|T*)
+ return 1;;
+ *)
+ return 0;;
+ esac
+}
+
+MD_DEVS=all
+[ -s /conf/mdadm ] && . /conf/mdadm
+
+if [ "$MD_DEVS" = none ]; then
+ verbose &&
+ log_warning_msg "INITRDSTART set to \"none\" in /etc/default/mdadm, not assembling raid arrays"
+ exit 0
+fi
+
+if [ ! -f /proc/mdstat ] && ! modprobe -q md_mod; then
+ verbose && log_warning_msg "failed to load module md_mod."
+fi
+if [ ! -f /proc/mdstat ]; then
+ verbose && log_warning_msg "cannot initialise MD subsystem (/proc/mdstat missing)"
+ exit 0
+fi
+
+# handle /dev/md/X nodes
+mkdir -p /dev/md
+
+CONFIG=/etc/mdadm/mdadm.conf
+# in case the hook failed to install a configuration file, this is our last
+# attempt... the "emergency procedure"... <drumroll>
+if [ ! -e $CONFIG ]; then
+ log_warning_msg "missing mdadm.conf file, trying to create one..."
+ mkdir -p ${CONFIG%/*}
+ echo DEVICE partitions > $CONFIG
+ $MDADM --examine --scan >> $CONFIG
+ if [ -s $CONFIG ]; then
+ verbose && log_success_msg "mdadm.conf created."
+ else
+ verbose && log_failure_msg "could not create mdadm.conf, the boot will likely fail."
+ fi
+ MD_DEVS=all
+fi
+
+if [ "$MD_DEVS" = all ]; then
+
+ verbose && log_begin_msg "Assembling all MD arrays"
+ extra_args=''
+ [ -n "${MD_HOMEHOST:-}" ] && extra_args="--homehost=$MD_HOMEHOST"
+ if $MDADM --assemble --scan --run --auto=yes${extra_args:+ $extra_args}; then
+ verbose && log_success_msg "assembled all arrays."
+ else
+ log_failure_msg "failed to assemble all arrays."
+ fi
+ verbose && log_end_msg
+
+else
+ for dev in $MD_DEVS; do
+
+ verbose && log_begin_msg "Assembling MD array $dev"
+ if $MDADM --assemble --scan --run --auto=yes $dev; then
+ verbose && log_success_msg "started $dev"
+ else
+ log_failure_msg "failed to start $dev"
+ fi
+ verbose && log_end_msg
+
+ done
+fi
+
+wait_for_udev 10
+
+maybe_break post-mdadm
+
+exit 0