Assemble: ensure that <ignore>d arrays are not auto-assembled.

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>
This commit is contained in:
NeilBrown 2012-11-22 17:04:20 +11:00
parent 13f2dd6be5
commit 66eb2c93a6
1 changed files with 16 additions and 1 deletions

View 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