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>
This commit is contained in:
parent
8299d7f7c0
commit
2b12ab6d33
1 changed files with 1 additions and 1 deletions
|
@ -2714,7 +2714,7 @@ action_show(mddev_t *mddev, char *page)
|
||||||
{
|
{
|
||||||
char *type = "idle";
|
char *type = "idle";
|
||||||
if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) ||
|
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))
|
if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery))
|
||||||
type = "reshape";
|
type = "reshape";
|
||||||
else if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
|
else if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
|
||||||
|
|
Loading…
Reference in a new issue