summaryrefslogtreecommitdiffstats
path: root/Assemble.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-07 21:16:38 +1100
committerNeilBrown <neilb@suse.de>2008-11-07 21:49:08 +1100
commitf7ad3ccc7773155eb4e966429f84b529e8339354 (patch)
tree8387daeedeea9b1c24246a626ab5a4dee4523ba4 /Assemble.c
parente10a79c344d3e93612b359b526aae47ad02fb446 (diff)
downloadmdadm-f7ad3ccc7773155eb4e966429f84b529e8339354.tar.gz
mdadm-f7ad3ccc7773155eb4e966429f84b529e8339354.tar.xz
mdadm-f7ad3ccc7773155eb4e966429f84b529e8339354.zip
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>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/Assemble.c b/Assemble.c
index c86a165..98c9c2b 100644
--- a/Assemble.c
+++ b/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;