From: NeilBrown Date: Wed, 17 Oct 2007 06:30:53 +0000 (-0700) Subject: md: 'sync_action' in sysfs returns wrong value for readonly arrays X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=2b12ab6d33f413aabb623197eeecaad5c216e6ae;p=openwrt%2Fstaging%2Fblogic.git md: 'sync_action' in sysfs returns wrong value for readonly arrays When an array is started read-only, MD_RECOVERY_NEEDED can be set but no recovery will be running. This causes 'sync_action' to report the wrong value. We could remove the test for MD_RECOVERY_NEEDED, but doing so would leave a small gap after requesting a sync action, where 'sync_action' would still report the old value. So make sure that for a read-only array, 'sync_action' always returns 'idle'. Signed-off-by: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/md/md.c b/drivers/md/md.c index f173ace1f8fb..510625e3a965 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -2714,7 +2714,7 @@ action_show(mddev_t *mddev, char *page) { char *type = "idle"; if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || - test_bit(MD_RECOVERY_NEEDED, &mddev->recovery)) { + (!mddev->ro && test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))) { if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) type = "reshape"; else if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {