[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