From 805d30b2886903d668dc306431e15d9d168f77ed Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 22 Nov 2010 20:58:05 +1100 Subject: [PATCH] Assemble: merge 'member' test into ident_matches. This is a more sensible place for it, gathering all the tests together. Signed-off-by: NeilBrown --- Assemble.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/Assemble.c b/Assemble.c index 6602a09..21c3f13 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))