diff options
author | NeilBrown <neilb@suse.de> | 2008-11-07 21:16:38 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2008-11-07 21:49:08 +1100 |
commit | f7ad3ccc7773155eb4e966429f84b529e8339354 (patch) | |
tree | 8387daeedeea9b1c24246a626ab5a4dee4523ba4 /Assemble.c | |
parent | e10a79c344d3e93612b359b526aae47ad02fb446 (diff) | |
download | mdadm-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.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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; |