/* add disk needs to know about containers */
if (st->ss->external)
sra->array.level = LEVEL_CONTAINER;
+
+ if (info.array.state & (1 << MD_SB_CLUSTERED))
+ info.disk.state |= (1 << MD_DISK_CLUSTER_ADD);
+
err = add_disk(mdfd, st, sra, &info);
if (err < 0 && errno == EBUSY) {
/* could be another device present with the same
close(mdfd);
if (policy)
dev_policy_free(policy);
- if (sra)
- sysfs_free(sra);
+ sysfs_free(sra);
return rv;
out_unlock:
map_unlock(&map);
sizeof(target->uuid)) == 0 &&
sra->array.failed_disks > 0) {
/* This is our target!! */
- if (chosen)
- sysfs_free(chosen);
+ sysfs_free(chosen);
chosen = sra;
sra = NULL;
/* skip to end so we don't check any more */
sra = NULL;
}
next:
- if (sra)
- sysfs_free(sra);
+ sysfs_free(sra);
if (st != st2)
free(st2);
if (dl)
if (devnm && strcmp(devnm, me->devnm) != 0)
continue;
- if (devnm && me->metadata[0] == '/') {
+ if (me->metadata[0] == '/') {
char *sl;
+
+ if (!devnm)
+ continue;
+
/* member array, need to work on container */
strncpy(container, me->metadata+1, 32);
container[31] = 0;