diff options
-rw-r--r-- | Incremental.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Incremental.c b/Incremental.c index a99811d..7f67535 100644 --- a/Incremental.c +++ b/Incremental.c @@ -368,6 +368,22 @@ int Incremental(char *devname, int verbose, int runstop, else strcpy(chosen_name, devnum2devname(mp->devnum)); + /* It is generally not OK to add drives to a running array + * as they are probably missing because they failed. + * However if runstop is 1, then the array was possibly + * started early and our best be is to add this anyway. + * It would probably be good to allow explicit policy + * statement about this. + */ + if (runstop < 1) { + if (ioctl(mdfd, GET_ARRAY_INFO, &ainf) == 0) { + fprintf(stderr, Name + ": not adding %s to active array (without --run) %s\n", + devname, chosen_name); + close(mdfd); + return 2; + } + } sra = sysfs_read(mdfd, fd2devnum(mdfd), (GET_DEVS | GET_STATE)); if (sra->devs) { |