From 43d5ec18441580469ee190b5fb21e629fbb11a83 Mon Sep 17 00:00:00 2001 From: Krzysztof Wojcik Date: Tue, 25 Jan 2011 17:44:11 +1100 Subject: [PATCH] Check number of failed disks durig raid10->raid0 takeover Number of failed disks MUST be half of initial number of disks. If number of failed disks is different we should not update metadata- data corruption may occur after array reassemlation. Signed-off-by: Krzysztof Wojcik Signed-off-by: NeilBrown --- super-intel.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/super-intel.c b/super-intel.c index 65391ff0..0ff7b2be 100644 --- a/super-intel.c +++ b/super-intel.c @@ -5791,6 +5791,10 @@ static int apply_takeover_update(struct imsm_update_takeover *u, map = get_imsm_map(dev, 0); if (u->direction == R10_TO_R0) { + /* Number of failed disks must be half of initial disk number */ + if (imsm_count_failed(super, dev) != (map->num_members / 2)) + return 0; + /* iterate through devices to mark removed disks as spare */ for (dm = super->disks; dm; dm = dm->next) { if (dm->disk.status & FAILED_DISK) { -- 2.39.5