From: NeilBrown Date: Fri, 7 Nov 2008 10:16:38 +0000 (+1100) Subject: Assemble: fix some auto-assemble bugs. X-Git-Tag: mdadm-3.0-devel3~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7ad3ccc7773155eb4e966429f84b529e8339354;p=thirdparty%2Fmdadm.git 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 --- diff --git a/Assemble.c b/Assemble.c index c86a165e..98c9c2b7 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;