summaryrefslogtreecommitdiff
path: root/Assemble.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-11-22 20:58:05 +1100
committerNeilBrown <neilb@suse.de>2010-11-22 20:58:05 +1100
commit1415fe4b6c766caa5a3e57a15cac4a3ac395c543 (patch)
treed2d5ae9cded2ac6b1a5805f9db519a8d5f5792da /Assemble.c
parentbac0d92e931259a2d41be1b9fe779d39d5d011b7 (diff)
Assemble: contract next_member loop.
We have a 'goto next_member' loop which is rather spread-out and confusing. Recent refactoring make it possible to contract that loop significantly. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/Assemble.c b/Assemble.c
index 197ae1ea..b3a214a7 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -390,11 +390,12 @@ int Assemble(struct supertype *st, char *mddev,
if (verbose > 0)
fprintf(stderr, Name ": looking in container %s\n",
devname);
+
+ tmpdev->content = tst->ss->container_content(tst, NULL);
next_member:
if (tmpdev->content)
content = tmpdev->content;
- else
- content = tst->ss->container_content(tst, NULL);
+
if (!content)
goto loop; /* empty container */
@@ -405,7 +406,7 @@ int Assemble(struct supertype *st, char *mddev,
if (!ident_matches(ident, content, tst,
homehost, update,
report_missmatch ? devname : NULL))
- goto loop;
+ goto next_member;
/* we have the one container we need, don't keep
* looking. If the chosen member is active, skip.
@@ -521,8 +522,6 @@ int Assemble(struct supertype *st, char *mddev,
loop:
dev_policy_free(pol);
pol = NULL;
- if (tmpdev->content)
- goto next_member;
if (tst)
tst->ss->free_super(tst);
}