From: NeilBrown Date: Tue, 30 Sep 2014 05:24:25 +0000 (+1000) Subject: md: don't allow "-sync" to be set for device in an active array. X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e1960f8c5cd1420dd2ecf0754a136956246365e7;p=linux.git md: don't allow "-sync" to be set for device in an active array. If an array is active, devices can be marked 'faulty', but simply removing the 'sync' flag is wrong. That only makes sense for an array which is not active (and is probably only useful for testing anyway). Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 3ca611fabfaf0..9939122ca00cf 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -2642,10 +2642,12 @@ state_store(struct md_rdev *rdev, const char *buf, size_t len) set_bit(In_sync, &rdev->flags); err = 0; } else if (cmd_match(buf, "-insync") && rdev->raid_disk >= 0) { - clear_bit(In_sync, &rdev->flags); - rdev->saved_raid_disk = rdev->raid_disk; - rdev->raid_disk = -1; - err = 0; + if (rdev->mddev->pers == NULL) { + clear_bit(In_sync, &rdev->flags); + rdev->saved_raid_disk = rdev->raid_disk; + rdev->raid_disk = -1; + err = 0; + } } else if (cmd_match(buf, "write_error")) { set_bit(WriteErrorSeen, &rdev->flags); err = 0;