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:
parent
13f2dd6be5
commit
66eb2c93a6
17
Assemble.c
17
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, "<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
|
||||
|
|
Loading…
Reference in New Issue