summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Incremental.c24
-rw-r--r--Monitor.c5
-rw-r--r--config.c9
-rw-r--r--mdadm.c10
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) {
/*
diff --git a/Monitor.c b/Monitor.c
index 1c19057..0e2e6bc 100644
--- a/Monitor.c
+++ b/Monitor.c
@@ -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);
diff --git a/config.c b/config.c
index 02ab3e0..f08a9f0 100644
--- a/config.c
+++ b/config.c
@@ -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;
}
diff --git a/mdadm.c b/mdadm.c
index f3086a9..b2ec6f9 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -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;