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:
parent
e10a79c344
commit
f7ad3ccc77
13
Assemble.c
13
Assemble.c
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue