commit 3441ea1252479a6b541f460a8ca8b6abdef5d1d0
Author: Marcin Krol <[email protected]>
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 <[email protected]>
+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 <[email protected]>
+---
+ 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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to