From: NeilBrown Date: Thu, 13 Jan 2011 22:14:34 +0000 (+1100) Subject: md: Fix removal of extra drives when converting RAID6 to RAID5 X-Git-Tag: v2.6.36.4~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0addbdd392125780ac65bcd9dcf69eae2afb9c01;p=thirdparty%2Fkernel%2Fstable.git md: Fix removal of extra drives when converting RAID6 to RAID5 commit bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca upstream. When a RAID6 is converted to a RAID5, the extra drive should be discarded. However it isn't due to a typo in a comparison. This bug was introduced in commit e93f68a1fc6 in 2.6.35-rc4 and is suitable for any -stable since than. As the extra drive is not removed, the 'degraded' counter is wrong and so the RAID5 will not respond correctly to a subsequent failure. Signed-off-by: NeilBrown Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 94bb484973a32..e8de9083ccd67 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3111,7 +3111,7 @@ level_store(mddev_t *mddev, const char *buf, size_t len) char nm[20]; if (rdev->raid_disk < 0) continue; - if (rdev->new_raid_disk > mddev->raid_disks) + if (rdev->new_raid_disk >= mddev->raid_disks) rdev->new_raid_disk = -1; if (rdev->new_raid_disk == rdev->raid_disk) continue;