Assemble: handle container members better

When looking for a specific member, don't accept a
different member, but step on to the next one.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2009-10-19 17:08:04 +11:00
parent 7636b5a8bb
commit 8a0a0ded4a
1 changed files with 18 additions and 0 deletions

View File

@ -408,6 +408,9 @@ int Assemble(struct supertype *st, char *mddev,
fprintf(stderr, Name ": member %s in %s is already assembled\n",
content->text_version,
devname);
skip:
if (tmpdev->content)
goto next_member;
tst->ss->free_super(tst);
tst = NULL;
content = NULL;
@ -415,6 +418,21 @@ int Assemble(struct supertype *st, char *mddev,
goto loop;
return 1;
}
if (ident->member && ident->member[0]) {
char *s = strchr(content->text_version+1, '/');
if (s == NULL) {
fprintf(stderr, Name ": badly formatted version: %s\n",
content->text_version);
goto skip;
}
if (strcmp(ident->member, s+1) != 0) {
if (report_missmatch)
fprintf(stderr,
Name ": skipping wrong member %s\n",
content->text_version);
goto skip;
}
}
st = tst; tst = NULL;
if (!auto_assem && tmpdev->next != NULL) {
fprintf(stderr, Name ": %s is a container, but is not "