]> git.pld-linux.org Git - packages/mdadm.git/commitdiff
- upstream fix for array assembling auto/ti/mdadm-3.3.1-2
authorMarcin Krol <hawk@tld-linux.org>
Tue, 5 Aug 2014 15:32:41 +0000 (15:32 +0000)
committerMarcin Krol <hawk@tld-linux.org>
Tue, 5 Aug 2014 15:32:41 +0000 (15:32 +0000)
assemble-fail-fix.patch [new file with mode: 0644]
mdadm.spec

diff --git a/assemble-fail-fix.patch b/assemble-fail-fix.patch
new file mode 100644 (file)
index 0000000..a4282f8
--- /dev/null
@@ -0,0 +1,85 @@
+From 5141638c54535b4ac80b8481404d868a63a18ecd Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@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@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
+
index fcdbfd7a7eb706b69f13035913c74ce10258df60..ae70c7fe27b9bf3bbcec4aba228bf614655680c9 100644 (file)
@@ -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}
This page took 0.116032 seconds and 4 git commands to generate.