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
commit805d30b2886903d668dc306431e15d9d168f77ed (patch)
tree05c39084fcc030b2945cce7aa4ceaf625a7b1040 /Assemble.c
parentfa0312397e105afee9c61d2b9c016b3fe6a1178f (diff)
Assemble: merge 'member' test into ident_matches.
This is a more sensible place for it, gathering all the tests together. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/Assemble.c b/Assemble.c
index 6602a090..21c3f131 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -112,6 +112,21 @@ static int ident_matches(struct mddev_ident *ident,
devname);
return 0;
}
+ if (ident->member && ident->member[0]) {
+ /* content->text_version must match */
+ char *s = strchr(content->text_version+1, '/');
+ if (s == NULL) {
+ if (devname)
+ fprintf(stderr, Name ": %s is not a container and one is required.\n",
+ devname);
+ return 0;
+ } else if (strcmp(ident->member, s+1) != 0) {
+ if (devname)
+ fprintf(stderr, Name ": skipping wrong member %s is %s\n",
+ content->text_version, devname);
+ return 0;
+ }
+ }
return 1;
}
@@ -417,19 +432,6 @@ int Assemble(struct supertype *st, char *mddev,
content->text_version,
devname);
skip = 1;
- } else if (ident->member && ident->member[0]) {
- char *s = strchr(content->text_version+1, '/');
- if (s == NULL) {
- fprintf(stderr, Name ": badly formatted version: %s\n",
- content->text_version);
- skip = 1;
- } else if (strcmp(ident->member, s+1) != 0) {
- if (report_missmatch)
- fprintf(stderr,
- Name ": skipping wrong member %s\n",
- content->text_version);
- skip = 1;
- }
}
if (skip) {
content = content->next;
@@ -457,15 +459,6 @@ int Assemble(struct supertype *st, char *mddev,
break;
}
- if (ident->container || ident->member) {
- /* No chance of this matching if we don't have
- * a container */
- if (report_missmatch)
- fprintf(stderr, Name "%s is not a container, and one is required.\n",
- devname);
- goto loop;
- }
-
if (!ident_matches(ident, content, tst,
homehost, update,
report_missmatch ? devname : NULL))