Fix tests on ->container and ->member

For container= and member= to be effective in an mdadm.conf line
they must both be present.  So when checking for their absence we
need container != NULL || member != NULL.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2009-05-11 15:18:25 +10:00
parent 061f2c6abd
commit aa7c284c06
2 changed files with 3 additions and 3 deletions

View File

@ -140,7 +140,7 @@ int Assemble(struct supertype *st, char *mddev,
int clean;
int auto_assem = (mddev == NULL && !ident->uuid_set &&
ident->super_minor == UnSet && ident->name[0] == 0
&& ident->container == NULL && ident->member == NULL);
&& (ident->container == NULL || ident->member == NULL));
int old_linux = 0;
int vers = vers; /* Keep gcc quite - it really is initialised */
struct {
@ -504,7 +504,7 @@ int Assemble(struct supertype *st, char *mddev,
break;
}
if (!auto_assem && trustworthy == FOREIGN)
/* If the array is listed in mdadm or on
/* If the array is listed in mdadm.conf or on
* command line, then we trust the name
* even if the array doesn't look local
*/

View File

@ -567,7 +567,7 @@ void arrayline(char *line)
}
if (mis.uuid_set == 0 && mis.devices == NULL &&
mis.super_minor == UnSet && mis.name[0] == 0 &&
(mis.container == NULL && mis.member == NULL))
(mis.container == NULL || mis.member == NULL))
fprintf(stderr, Name ": ARRAY line %s has no identity information.\n", mis.devname);
else {
mi = malloc(sizeof(*mi));