* statement about this.
*/
if (runstop < 1) {
- if (ioctl(mdfd, GET_ARRAY_INFO, &ainf) == 0) {
+ int active = 0;
+
+ if (st->ss->external) {
+ char *devname = devnum2devname(fd2devnum(mdfd));
+
+ active = devname && is_container_active(devname);
+ free(devname);
+ } else if (ioctl(mdfd, GET_ARRAY_INFO, &ainf) == 0)
+ active = 1;
+ if (active) {
fprintf(stderr, Name
": not adding %s to active array (without --run) %s\n",
devname, chosen_name);
extern int open_container(int fd);
extern int is_container_member(struct mdstat_ent *ent, char *devname);
extern int is_subarray_active(char *subarray, char *devname);
+int is_container_active(char *devname);
extern int open_subarray(char *dev, struct supertype *st, int quiet);
extern struct superswitch *version_to_superswitch(char *vers);
if (is_container_member(ent, container)) {
char *inst = &ent->metadata_version[10+strlen(container)+1];
- if (strcmp(inst, subarray) == 0)
+ if (!subarray || strcmp(inst, subarray) == 0)
break;
}
}
return ent != NULL;
}
+int is_container_active(char *container)
+{
+ return is_subarray_active(NULL, container);
+}
+
/* open_subarray - opens a subarray in a container
* @dev: container device name
* @st: supertype with only ->subarray set