diff options
author | NeilBrown <neilb@suse.de> | 2010-11-22 20:58:06 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2010-11-22 20:58:06 +1100 |
commit | 88cef9b3e634987b1689b61c643552e2cdecdbf9 (patch) | |
tree | 4d3a9d91e8338a4d8df7c6102a9b740b62376d8b /Assemble.c | |
parent | 02c2c474876ed66a016dbeef667e692a69bfec0d (diff) |
Assemble: turn next_member goto loop into a for loop.
It becomes much clearer what is happening now.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r-- | Assemble.c | 40 |
1 files changed, 19 insertions, 21 deletions
@@ -406,29 +406,27 @@ int Assemble(struct supertype *st, char *mddev, fprintf(stderr, Name ": looking in container %s\n", devname); - content = tst->ss->container_content(tst, NULL); - next_member: - - if (!content) - goto loop; /* empty container */ - - if (content->next == NULL) + for (content = tst->ss->container_content(tst, NULL); + content; + content = content->next) { + + if (!ident_matches(ident, content, tst, + homehost, update, + report_missmatch ? devname : NULL)) + /* message already printed */; + else 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); + } else + break; + } + if (!content) { tmpdev->used = 2; - - if (!ident_matches(ident, content, tst, - homehost, update, - report_missmatch ? devname : NULL)) { - content = content->next; - goto next_member; - } else 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); - - content = content->next; - goto next_member; + goto loop; /* empty container */ } + st = tst; tst = NULL; if (!auto_assem && inargv && tmpdev->next != NULL) { fprintf(stderr, Name ": %s is a container, but is not " |