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);
}
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);
}
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);
}
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);
!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);
/* 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;
}
/* 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) {
/*
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;
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;
}
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;