summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2007-10-16 23:30:53 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 08:43:03 -0700
commit2b12ab6d33f413aabb623197eeecaad5c216e6ae (patch)
tree5fffaf905d8495d54bfb82fc6be080c3b292e391 /drivers/md/md.c
parent8299d7f7c067a30a67ad359d416128c4ff57dcd1 (diff)
downloadkernel-crypto-2b12ab6d33f413aabb623197eeecaad5c216e6ae.tar.gz
kernel-crypto-2b12ab6d33f413aabb623197eeecaad5c216e6ae.tar.xz
kernel-crypto-2b12ab6d33f413aabb623197eeecaad5c216e6ae.zip
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 <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index f173ace1f8f..510625e3a96 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)) {