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;
|
tmpdev->content = content->next;
|
||||||
if (tmpdev->content == NULL)
|
if (tmpdev->content == NULL)
|
||||||
tmpdev->used = 1;
|
tmpdev->used = 2;
|
||||||
|
|
||||||
} else if (ident->container || ident->member) {
|
} else if (ident->container || ident->member) {
|
||||||
/* No chance of this matching if we don't have
|
/* 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.
|
* looking. If the chosen member is active, skip.
|
||||||
*/
|
*/
|
||||||
if (is_member_busy(content->text_version)) {
|
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)
|
if (auto_assem)
|
||||||
goto loop;
|
goto loop;
|
||||||
fprintf(stderr, Name ": member %s in %s is already assembled\n",
|
|
||||||
content->text_version,
|
|
||||||
devname);
|
|
||||||
tst->ss->free_super(tst);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
st = tst; tst = NULL;
|
st = tst; tst = NULL;
|
||||||
|
|
Loading…
Reference in New Issue