]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Assemble: ensure that <ignore>d arrays are not auto-assembled.
authorNeilBrown <neilb@suse.de>
Thu, 22 Nov 2012 06:04:20 +0000 (17:04 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 22 Nov 2012 06:04:20 +0000 (17:04 +1100)
It isn't enough to simply not assemble arrays found to be called
<ignore>, as the final stage of auto-assemble doesn't check for names
in mdadm.conf.

So add a check to Assemble, similar to the check in Incremental()

Reported-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: NeilBrown <neilb@suse.de>
Assemble.c

index c2fa0961a1af2ca9a4ed5f2a5e817e4634c2884c..9ef1bf0edd367f600a67ba07b62c25063860e7ac 100644 (file)
@@ -362,6 +362,8 @@ 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);
@@ -370,7 +372,20 @@ static int select_devices(struct mddev_dev *devlist,
                                           c->homehost, c->update,
                                           report_missmatch ? devname : NULL))
                                goto loop;
-                               
+
+                       match = conf_match(tst, content, devname,
+                                          report_missmatch ? c->verbose : -1,
+                                          &rv);
+                       if (!match && rv == 2)
+                               goto loop;
+                       if (match && match->devname &&
+                           strcasecmp(match->devname, "<ignore>") == 0) {
+                               if (report_missmatch)
+                                       pr_err("%s is a member of an explicitly ignored array\n",
+                                              devname);
+                               goto loop;
+                       }
+
                        /* should be safe to try an exclusive open now, we
                         * have rejected anything that some other mdadm might
                         * be looking at