void map_add(struct map_ent **melp,
int devnum, char *metadata, int uuid[4], char *path)
{
- struct map_ent *me = malloc(sizeof(*me));
+ struct map_ent *me = xmalloc(sizeof(*me));
me->devnum = devnum;
strcpy(me->metadata, metadata);
memcpy(me->uuid, uuid, 16);
- me->path = path ? strdup(path) : NULL;
+ me->path = path ? xstrdup(path) : NULL;
me->next = *melp;
me->bad = 0;
*melp = me;
strcpy(mp->metadata, metadata);
memcpy(mp->uuid, uuid, 16);
free(mp->path);
- mp->path = path ? strdup(path) : NULL;
+ mp->path = path ? xstrdup(path) : NULL;
mp->bad = 0;
break;
}
close(dfd);
if (ok != 0)
continue;
- info = st->ss->container_content(st, subarray);
+ if (subarray)
+ info = st->ss->container_content(st, subarray);
+ else {
+ info = xmalloc(sizeof(*info));
+ st->ss->getinfo_super(st, info, NULL);
+ }
if (!info)
continue;
* an MD_DEVNAME for udev.
* The name needs to be unique both in /dev/md/
* and in this mapfile.
- * It needs to match watch -I or -As would come
+ * It needs to match what -I or -As would come
* up with.
* That means:
* Check if array is in mdadm.conf