[packages/mdadm] - upstream fix for array assembling
hawk
hawk at pld-linux.org
Tue Aug 5 17:33:49 CEST 2014
commit 3441ea1252479a6b541f460a8ca8b6abdef5d1d0
Author: Marcin Krol <hawk at tld-linux.org>
Date: Tue Aug 5 15:32:41 2014 +0000
- upstream fix for array assembling
assemble-fail-fix.patch | 85 +++++++++++++++++++++++++++++++++++++++++++++++++
mdadm.spec | 4 ++-
2 files changed, 88 insertions(+), 1 deletion(-)
---
diff --git a/mdadm.spec b/mdadm.spec
index fcdbfd7..ae70c7f 100644
--- a/mdadm.spec
+++ b/mdadm.spec
@@ -8,7 +8,7 @@ Summary: Tool for creating and maintaining software RAID devices
Summary(pl.UTF-8): Narzędzie do tworzenia i obsługi programowych macierzy RAID
Name: mdadm
Version: 3.3.1
-Release: 1
+Release: 2
License: GPL v2+
Group: Base
Source0: https://www.kernel.org/pub/linux/utils/raid/mdadm/%{name}-%{version}.tar.xz
@@ -17,6 +17,7 @@ Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.cron
Source4: %{name}-checkarray
+Patch0: assemble-fail-fix.patch
URL: https://www.kernel.org/pub/linux/utils/raid/mdadm/
BuildRequires: groff
BuildRequires: rpmbuild(macros) >= 1.213
@@ -66,6 +67,7 @@ skonsolidowane na potrzeby initrd.
%prep
%setup -q
+%patch0 -p1
%build
%if %{with initrd}
diff --git a/assemble-fail-fix.patch b/assemble-fail-fix.patch
new file mode 100644
index 0000000..a4282f8
--- /dev/null
+++ b/assemble-fail-fix.patch
@@ -0,0 +1,85 @@
+From 5141638c54535b4ac80b8481404d868a63a18ecd Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb at suse.de>
+Date: Tue, 29 Jul 2014 13:48:23 +1000
+Subject: [PATCH] Assemble: Only fail auto-assemble in face of mdadm.conf
+ conflicts.
+
+We should never auto-assemble things that conflict with mdadm.conf
+However explicit assembly requests should be allowed.
+
+Reported-by: olovopb
+Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1070245
+Signed-off-by: NeilBrown <neilb at suse.de>
+---
+ Assemble.c | 47 ++++++++++++++++++++++++++---------------------
+ 1 file changed, 26 insertions(+), 21 deletions(-)
+
+diff --git a/Assemble.c b/Assemble.c
+index aca28be..cdcdb0f 100644
+--- a/Assemble.c
++++ b/Assemble.c
+@@ -366,9 +366,6 @@ static int select_devices(struct mddev_dev *devlist,
+ tmpdev = NULL;
+ goto loop;
+ } else {
+- int rv = 0;
+- struct mddev_ident *match;
+-
+ content = *contentp;
+ tst->ss->getinfo_super(tst, content, NULL);
+
+@@ -377,25 +374,33 @@ static int select_devices(struct mddev_dev *devlist,
+ report_mismatch ? devname : NULL))
+ goto loop;
+
+- match = conf_match(tst, content, devname,
+- report_mismatch ? c->verbose : -1,
+- &rv);
+- if (!match && rv == 2)
+- goto loop;
+- if (match && match->devname &&
+- strcasecmp(match->devname, "<ignore>") == 0) {
+- if (report_mismatch)
+- pr_err("%s is a member of an explicitly ignored array\n",
+- devname);
+- goto loop;
+- }
+- if (match && !ident_matches(match, content, tst,
+- c->homehost, c->update,
+- report_mismatch ? devname : NULL))
+- /* Array exists in mdadm.conf but some
+- * details don't match, so reject it
++ if (auto_assem) {
++ /* Never auto-assemble things that conflict
++ * with mdadm.conf in some way
+ */
+- goto loop;
++ struct mddev_ident *match;
++ int rv = 0;
++
++ match = conf_match(tst, content, devname,
++ report_mismatch ? c->verbose : -1,
++ &rv);
++ if (!match && rv == 2)
++ goto loop;
++ if (match && match->devname &&
++ strcasecmp(match->devname, "<ignore>") == 0) {
++ if (report_mismatch)
++ pr_err("%s is a member of an explicitly ignored array\n",
++ devname);
++ goto loop;
++ }
++ if (match && !ident_matches(match, content, tst,
++ c->homehost, c->update,
++ report_mismatch ? devname : NULL))
++ /* Array exists in mdadm.conf but some
++ * details don't match, so reject it
++ */
++ goto loop;
++ }
+
+ /* should be safe to try an exclusive open now, we
+ * have rejected anything that some other mdadm might
+--
+2.0.3
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mdadm.git/commitdiff/3441ea1252479a6b541f460a8ca8b6abdef5d1d0
More information about the pld-cvs-commit
mailing list