Check that 'mdadm --assemble' is effective before continuing.
svn path=/nixos/trunk/; revision=19339
This commit is contained in:
parent
f22a548c0d
commit
b02cf8d20e
@ -5,6 +5,7 @@
|
||||
let
|
||||
|
||||
tempConf = "/var/run/mdadm.conf";
|
||||
tempStatus = "/var/run/mdadm.status";
|
||||
logFile = "/var/log/mdadmEvents.log";
|
||||
modprobe = config.system.sbin.modprobe;
|
||||
inherit (pkgs) mdadm diffutils;
|
||||
@ -42,9 +43,21 @@ in
|
||||
# Scan /proc/partitions for RAID devices.
|
||||
${mdadm}/sbin/mdadm --examine --brief --scan -c partitions > ${tempConf}
|
||||
|
||||
if ! ${diffutils}/bin/diff ${tempConf} ${tempConf}.old > /dev/null; then
|
||||
# Activate each device found.
|
||||
${mdadm}/sbin/mdadm --assemble -c ${tempConf} --scan
|
||||
if ! -q ${diffutils}/bin/diff ${tempConf} ${tempConf}.old > /dev/null; then
|
||||
|
||||
try=0
|
||||
while ! test -e /proc/mdstat || ! ${diffutils}/bin/diff -q /proc/mdstat ${tempStatus} > /dev/null; do
|
||||
test $try -gt 6 && break
|
||||
test $try -neq 0 && sleep 10
|
||||
|
||||
# Activate each device found.
|
||||
${mdadm}/sbin/mdadm --assemble -c ${tempConf} --scan
|
||||
|
||||
try=$(($try + 1))
|
||||
done
|
||||
|
||||
# Register the new status
|
||||
cp /proc/mdstat ${tempStatus}
|
||||
|
||||
# Send notifications.
|
||||
initctl emit -n new-devices
|
||||
@ -64,6 +77,7 @@ in
|
||||
|
||||
postStart = ''
|
||||
echo > ${tempConf}
|
||||
echo > ${tempStatus}
|
||||
|
||||
# Assemble early raid devices.
|
||||
initctl emit -n new-raid-array
|
||||
|
Loading…
Reference in New Issue
Block a user