Accepting request 123057 from Base:System

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/123057
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/mdadm?expand=0&rev=69
This commit is contained in:
Stephan Kulow
2012-06-01 05:21:25 +00:00
committed by Git OBS Bridge
6 changed files with 94 additions and 1 deletions

View File

@@ -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

View File

@@ -1,3 +1,21 @@
-------------------------------------------------------------------
Thu May 24 01:52:37 UTC 2012 - nfbrown@suse.com
- udev-rules.fix: make sure systemd doesn't try
to mount array before it is fully assembled.
(bnc#752869)
-------------------------------------------------------------------
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

35
mdadm.cron Normal file
View File

@@ -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

View File

@@ -35,6 +35,8 @@ Source3: mdadmd
Source4: boot.md
Source5: mkinitrd-setup.sh
Source6: mkinitrd-boot.sh
Source7: mdadm.cron
Patch1: udev-rules.fix
%description
Mdadm is a program that can be used to control Linux md devices. It is
@@ -43,6 +45,7 @@ programs but with a very different interface.
%prep
%setup -q -a1
%patch1 -p1
%build
make %{?_smp_mflags} CC="%__cc" CXFLAGS="$RPM_OPT_FLAGS -Wno-error"
@@ -59,6 +62,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
@@ -114,8 +119,10 @@ rm -rf $RPM_BUILD_ROOT
%dir /lib/mkinitrd/scripts
/lib/mkinitrd/scripts/setup-md.sh
/lib/mkinitrd/scripts/boot-md.sh
%dir /lib/udev
%dir /lib/udev/rules.d
/lib/udev/rules.d/64-md-raid.rules
%dir /etc
%dir /etc/cron.daily
/etc/cron.daily/mdadm
%changelog

View File

@@ -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

28
udev-rules.fix Normal file
View File

@@ -0,0 +1,28 @@
From 339b77467a7ad5e5354b5ab0542f8148b18c898c Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.de>
Date: Thu, 24 May 2012 11:49:49 +1000
Subject: [PATCH] udev-rules: prevent systemd from mount devices before they
are ready.
When an array is assembled incrementally, systemd might see it
before it is ready, try to mount it, fail, and give up.
Result is that array doesn't get mounted.
If we ask udev to tell systemd that it isn't ready yet in this
case, systemd waits until it is ready, and all are happy.
Signed-off-by: NeilBrown <neilb@suse.de>
diff --git a/udev-md-raid.rules b/udev-md-raid.rules
index f564f70..814c897 100644
--- a/udev-md-raid.rules
+++ b/udev-md-raid.rules
@@ -28,7 +28,7 @@ ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
# never leave state 'inactive'
ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
TEST!="md/array_state", GOTO="md_end"
-ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
+ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end"
LABEL="md_ignore_state"
IMPORT{program}="/sbin/mdadm --detail --export $tempnode"