]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Assemble: fix some auto-assemble bugs.
authorNeilBrown <neilb@suse.de>
Fri, 7 Nov 2008 10:16:38 +0000 (21:16 +1100)
committerNeilBrown <neilb@suse.de>
Fri, 7 Nov 2008 10:49:08 +0000 (21:49 +1100)
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>
Assemble.c

index c86a165ee139b6a560e02c1a23b92c99554ed761..98c9c2b7d2047fe93a5f8f13b75d19076c5f944e 100644 (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;