From: NeilBrown Date: Thu, 22 Nov 2012 06:04:20 +0000 (+1100) Subject: Assemble: ensure that d arrays are not auto-assembled. X-Git-Tag: mdadm-3.3-rc1~140 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66eb2c93a619eb1d79dc653fd91add159aa3d1ff;p=thirdparty%2Fmdadm.git Assemble: ensure that d arrays are not auto-assembled. It isn't enough to simply not assemble arrays found to be called , 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 Signed-off-by: NeilBrown --- diff --git a/Assemble.c b/Assemble.c index c2fa0961..9ef1bf0e 100644 --- a/Assemble.c +++ b/Assemble.c @@ -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, "") == 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