Assemble: fix some auto-assemble bugs.

1/ when we choose not to use a device, must set ->used to 2, not 1.
2/ When we give up on a member, clear st and content.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2008-11-07 21:16:38 +11:00
parent e10a79c344
commit f7ad3ccc77
1 changed files with 8 additions and 5 deletions

View File

@ -320,7 +320,7 @@ int Assemble(struct supertype *st, char *mddev,
tmpdev->content = content->next;
if (tmpdev->content == NULL)
tmpdev->used = 1;
tmpdev->used = 2;
} else if (ident->container || ident->member) {
/* No chance of this matching if we don't have
@ -396,12 +396,15 @@ int Assemble(struct supertype *st, char *mddev,
* looking. If the chosen member is active, skip.
*/
if (is_member_busy(content->text_version)) {
if (report_missmatch)
fprintf(stderr, Name ": member %s in %s is already assembled\n",
content->text_version,
devname);
tst->ss->free_super(tst);
tst = NULL;
content = NULL;
if (auto_assem)
goto loop;
fprintf(stderr, Name ": member %s in %s is already assembled\n",
content->text_version,
devname);
tst->ss->free_super(tst);
return 1;
}
st = tst; tst = NULL;