From 9362c1c80c4464fb66e3cc9eb8ba7631f21810d7 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 18 Sep 2008 16:06:41 +1000 Subject: [PATCH] Allow metadata handler to report that it doesn't record homehost. For now, this means that the lack of a homehost doesn't always prevent assembly. Soon we will allow assembly anyway, but have different messages if homehost isn't supported. --- Assemble.c | 3 ++- Incremental.c | 2 +- mdadm.h | 3 +-- super-intel.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Assemble.c b/Assemble.c index 65a679b6..148ddbf7 100644 --- a/Assemble.c +++ b/Assemble.c @@ -339,7 +339,8 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, if (homehost) { int first = st->ss->match_home(st, homehost); int last = tst->ss->match_home(tst, homehost); - if (first+last == 1) { + if (first != last && + (first == 1 || last == 1)) { /* We can do something */ if (first) {/* just ignore this one */ if ((inargv && verbose >= 0) || verbose > 0) diff --git a/Incremental.c b/Incremental.c index d7eeafc1..f57c9bb1 100644 --- a/Incremental.c +++ b/Incremental.c @@ -217,7 +217,7 @@ int Incremental(char *devname, int verbose, int runstop, /* 3a/ if not, check for homehost match. If no match, reject. */ if (!match) { if (homehost == NULL || - st->ss->match_home(st, homehost) == 0) { + st->ss->match_home(st, homehost) != 1) { if (verbose >= 0) fprintf(stderr, Name ": not found in mdadm.conf and not identified by homehost.\n"); diff --git a/mdadm.h b/mdadm.h index 5bc41e81..7c73b6ac 100644 --- a/mdadm.h +++ b/mdadm.h @@ -446,8 +446,7 @@ extern struct superswitch { void (*getinfo_super)(struct supertype *st, struct mdinfo *info); /* Check if the given metadata is flagged as belonging to "this" - * host. For arrays that don't determine a minor-number, this - * can always be true (??) + * host. 0 for 'no', 1 for 'yes', -1 for "Don't record homehost" */ int (*match_home)(struct supertype *st, char *homehost); diff --git a/super-intel.c b/super-intel.c index ff86e094..f632bcfe 100644 --- a/super-intel.c +++ b/super-intel.c @@ -578,7 +578,7 @@ static int match_home_imsm(struct supertype *st, char *homehost) { printf("%s\n", __FUNCTION__); - return 0; + return -1; } static void uuid_from_super_imsm(struct supertype *st, int uuid[4]) -- 2.47.2