From 19859edc2d484a0fc05befa924a57cf576ab65bd Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sat, 9 Aug 2008 20:28:24 -0700 Subject: [PATCH] imsm: ensure 'usable' remains clear until the disk is in_sync Signed-off-by: Dan Williams --- super-intel.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/super-intel.c b/super-intel.c index 632ddd9a..b8beb8eb 100644 --- a/super-intel.c +++ b/super-intel.c @@ -2203,6 +2203,12 @@ static void imsm_set_disk(struct active_array *a, int n, int state) new_failure = 1; super->updates_pending++; } + /* check if in_sync */ + if ((state & DS_INSYNC) && !(status & USABLE_DISK)) { + status |= USABLE_DISK; + disk->status = __cpu_to_le32(status); + super->updates_pending++; + } /* the number of failures have changed, count up 'failed' to determine * degraded / failed status @@ -2511,7 +2517,7 @@ static void imsm_process_update(struct supertype *st, disk = &dl->disk; status = __le32_to_cpu(disk->status); status |= CONFIGURED_DISK; - status &= ~SPARE_DISK; + status &= ~(SPARE_DISK | USABLE_DISK); disk->status = __cpu_to_le32(status); /* count arrays using the victim in the metadata */ -- 2.39.2