diff options
-rw-r--r-- | Incremental.c | 24 | ||||
-rw-r--r-- | Monitor.c | 5 | ||||
-rw-r--r-- | config.c | 9 | ||||
-rw-r--r-- | mdadm.c | 10 |
4 files changed, 23 insertions, 25 deletions
diff --git a/Incremental.c b/Incremental.c index 30bca4a..55a5f10 100644 --- a/Incremental.c +++ b/Incremental.c @@ -154,7 +154,7 @@ int Incremental(char *devname, int verbose, int runstop, if (array_list->uuid_set && same_uuid(array_list->uuid, info.uuid, st->ss->swapuuid) == 0) { - if (verbose >= 2) + if (verbose >= 2 && array_list->devname) fprintf(stderr, Name ": UUID differs from %s.\n", array_list->devname); @@ -162,7 +162,7 @@ int Incremental(char *devname, int verbose, int runstop, } if (array_list->name[0] && strcasecmp(array_list->name, info.name) != 0) { - if (verbose >= 2) + if (verbose >= 2 && array_list->devname) fprintf(stderr, Name ": Name differs from %s.\n", array_list->devname); @@ -170,7 +170,7 @@ int Incremental(char *devname, int verbose, int runstop, } if (array_list->devices && !match_oneof(array_list->devices, devname)) { - if (verbose >= 2) + if (verbose >= 2 && array_list->devname) fprintf(stderr, Name ": Not a listed device for %s.\n", array_list->devname); @@ -178,7 +178,7 @@ int Incremental(char *devname, int verbose, int runstop, } if (array_list->super_minor != UnSet && array_list->super_minor != info.array.md_minor) { - if (verbose >= 2) + if (verbose >= 2 && array_list->devname) fprintf(stderr, Name ": Different super-minor to %s.\n", array_list->devname); @@ -188,7 +188,7 @@ int Incremental(char *devname, int verbose, int runstop, !array_list->name[0] && !array_list->devices && array_list->super_minor == UnSet) { - if (verbose >= 2) + if (verbose >= 2 && array_list->devname) fprintf(stderr, Name ": %s doesn't have any identifying information.\n", array_list->devname); @@ -197,10 +197,15 @@ int Incremental(char *devname, int verbose, int runstop, /* FIXME, should I check raid_disks and level too?? */ if (match) { - if (verbose >= 0) - fprintf(stderr, Name + if (verbose >= 0) { + if (match->devname && array_list->devname) + fprintf(stderr, Name ": we match both %s and %s - cannot decide which to use.\n", - match->devname, array_list->devname); + match->devname, array_list->devname); + else + fprintf(stderr, Name + ": multiple lines in mdadm.conf match\n"); + } return 2; } match = array_list; @@ -656,7 +661,8 @@ int IncrementalScan(int verbose) } /* Ok, we can try this one. Maybe it needs a bitmap */ for (mddev = devs ; mddev ; mddev = mddev->next) - if (strcmp(mddev->devname, me->path) == 0) + if (mddev->devname + && strcmp(mddev->devname, me->path) == 0) break; if (mddev && mddev->bitmap_file) { /* @@ -165,7 +165,10 @@ int Monitor(mddev_dev_t devlist, if (devlist == NULL) { mddev_ident_t mdlist = conf_get_ident(NULL); for (; mdlist; mdlist=mdlist->next) { - struct state *st = malloc(sizeof *st); + struct state *st; + if (mdlist->devname == NULL) + continue; + st = malloc(sizeof *st); if (st == NULL) continue; st->devname = strdup(mdlist->devname); @@ -529,14 +529,12 @@ void arrayline(char *line) w); } } - if (mis.devname == NULL) - fprintf(stderr, Name ": ARRAY line with no device\n"); - else if (mis.uuid_set == 0 && mis.devices == NULL && mis.super_minor == UnSet && mis.name[0] == 0) + if (mis.uuid_set == 0 && mis.devices == NULL && mis.super_minor == UnSet && mis.name[0] == 0) fprintf(stderr, Name ": ARRAY line %s has no identity information.\n", mis.devname); else { mi = malloc(sizeof(*mi)); *mi = mis; - mi->devname = strdup(mis.devname); + mi->devname = mis.devname ? strdup(mis.devname) : NULL; mi->next = NULL; *mddevlp = mi; mddevlp = &mi->next; @@ -721,7 +719,8 @@ mddev_ident_t conf_get_ident(char *dev) mddev_ident_t rv; load_conffile(); rv = mddevlist; - while (dev && rv && strcmp(dev, rv->devname)!=0) + while (dev && rv && (rv->devname == NULL + || strcmp(dev, rv->devname)!=0)) rv = rv->next; return rv; } @@ -1082,16 +1082,6 @@ int main(int argc, char *argv[]) exit(1); } for (; array_list; array_list = array_list->next) { - mdfd = open_mddev(array_list->devname, 0); - if (mdfd >= 0) { - mdu_array_info_t array; - /* skip if already assembled */ - if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0) { - cnt++; - close(mdfd); - continue; - } - } if (array_list->autof == 0) array_list->autof = autof; |