From: NeilBrown Date: Thu, 12 Aug 2010 01:41:41 +0000 (+1000) Subject: Allow --incremental to add spares to an array. X-Git-Tag: mdadm-3.1.4~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef83fe7cba7355d3da330325e416747b0696baef;p=thirdparty%2Fmdadm.git Allow --incremental to add spares to an array. Commit 3a6ec29ad56 stopped us from adding apparently-working devices to an active array with --incremental as there is a good chance that they are actually old/failed devices. Unfortunately it also stopped spares from being added to an active array, which is wrong. This patch refines the test to be more careful. Reported-by: Analysed-by: Dan Williams Signed-off-by: NeilBrown --- diff --git a/Incremental.c b/Incremental.c index e4b6196a..4d3d181b 100644 --- a/Incremental.c +++ b/Incremental.c @@ -370,14 +370,15 @@ 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. + /* It is generally not OK to add non-spare 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 ((info.disk.state & (1<ss->external) {