From: NeilBrown Date: Wed, 2 Feb 2011 00:57:13 +0000 (+1100) Subject: md: Don't allow slot_store while resync/recovery is happening. X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=c6751b2bde477f56ceef67aa1d298ce44e8e2e23;p=openwrt%2Fstaging%2Fblogic.git md: Don't allow slot_store while resync/recovery is happening. Activating a spare in an array while resync/recovery is already happening can lead the that spare being marked in-sync when it isn't really. So don't allow the 'slot' to be set (this activating the device) while resync/recovery is happening. Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index f2d5628d51cb..1138d1053e9a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -2463,6 +2463,9 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len) if (rdev->raid_disk != -1) return -EBUSY; + if (test_bit(MD_RECOVERY_RUNNING, &rdev->mddev->recovery)) + return -EBUSY; + if (rdev->mddev->pers->hot_add_disk == NULL) return -EINVAL;