diff --git a/boot.md b/boot.md index 1385899..aa539cd 100644 --- a/boot.md +++ b/boot.md @@ -125,6 +125,8 @@ case "$1" in # empty or missing /etc/mdadm.conf, "unused" rc_status -u else + # firstly finish any incremental assembly that has started. + $mdadm_BIN -IRs $mdadm_BIN -A -s -c $mdadm_CONFIG # a status of 2 is not an error test $? -eq 0 -o $? -eq 2 diff --git a/mdadm.changes b/mdadm.changes index 8d06d5c..630588a 100644 --- a/mdadm.changes +++ b/mdadm.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue May 22 05:15:52 UTC 2012 - nfbrown@suse.com + +- boot.md/mkinitrd-boot.sh: complete any incremental + assembly before attempting to assemble arrays. + If incremental assembly has partialy assembled + degraded arrays, now is the time to start them going. + (bnc#752869) +- mdamd.cron: send daily reports if any arrays are + degraded. + ------------------------------------------------------------------- Fri May 18 07:16:59 UTC 2012 - nfbrown@suse.com diff --git a/mdadm.cron b/mdadm.cron new file mode 100644 index 0000000..f8fe7bc --- /dev/null +++ b/mdadm.cron @@ -0,0 +1,35 @@ +#!/bin/sh + +# Run "mdadm --monitor --oneshot" once a day to ensure +# degraded arrays don't go unnoticed. + +mdadm_BIN=/sbin/mdadm +mdadm_CONFIG=/etc/sysconfig/mdadm + +[ -x $mdadm_BIN ] || exit 0 + +[ -r $mdadm_CONFIG ] && . $mdadm_CONFIG + +if [ x$MDADM_MAIL != x"" ]; then + MDADM_MAIL="-m \"$MDADM_MAIL\"" +fi + +if [ x$MDADM_PROGRAM != x"" ]; then + MDADM_PROGRAM="-p \"$MDADM_PROGRAM\"" +fi + +if [ x$MDADM_SCAN = x"yes" ]; then + MDADM_SCAN="-s" +else + MDADM_SCAN="" +fi + +if [ x$MDADM_CONFIG != x"" ]; then + MDADM_CONFIG="-c \"$MDADM_CONFIG\"" +fi + +# using --syslog avoids annoying warnings if no MAIL or PROGRAM are given +# in sysconfig or mdadm.conf +eval $mdadm_BIN -F $MDADM_RAIDDEVICES --oneshot --syslog $MDADM_MAIL $MDADM_PROGRAM $MDADM_SCAN $MDADM_SEND_MAIL $MDADM_CONFIG + +exit 0 diff --git a/mdadm.spec b/mdadm.spec index 7546e38..964bec6 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -35,6 +35,7 @@ Source3: mdadmd Source4: boot.md Source5: mkinitrd-setup.sh Source6: mkinitrd-boot.sh +Source7: mdadm.cron %description Mdadm is a program that can be used to control Linux md devices. It is @@ -59,6 +60,8 @@ install -m 755 %{S:4} %{S:3} $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ install -d $RPM_BUILD_ROOT/lib/mkinitrd/scripts install -m 755 %{S:5} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/setup-md.sh install -m 755 %{S:6} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/boot-md.sh +install -d $RPM_BUILD_ROOT/etc/cron.daily +install -m 755 %{S:7} $RPM_BUILD_ROOT/etc/cron.daily/mdadm install -m 644 %{S:2} $RPM_BUILD_ROOT%{_var}/adm/fillup-templates/ ln -sf ../../etc/init.d/mdadmd $RPM_BUILD_ROOT/%{_sbindir}/rcmdadmd rm -rf $RPM_BUILD_ROOT/run/mdadm diff --git a/mkinitrd-boot.sh b/mkinitrd-boot.sh index dec40ce..3cca304 100644 --- a/mkinitrd-boot.sh +++ b/mkinitrd-boot.sh @@ -127,6 +127,9 @@ md_assemble() fi } +# run any degraded arrays assembled incrementally +wait_for_events +$mdadm --incremental --run --scan md_assemble "$resumedev" md_assemble "$rootdev" if [ -n "$md_dev" ] ; then