diff --git a/[refs] b/[refs] index 02cf0a197412..c30ebd8adbcc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7f7583d420231b9d09897afd57a957011b606a5b +refs/heads/master: 48c26ddc9f85808632a63b3ae50b868c86a2435f diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 7564c44b8045..200d0862335f 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -4259,6 +4259,13 @@ action_store(struct mddev *mddev, const char *page, size_t len) set_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); set_bit(MD_RECOVERY_SYNC, &mddev->recovery); } + if (mddev->ro == 2) { + /* A write to sync_action is enough to justify + * canceling read-auto mode + */ + mddev->ro = 0; + md_wakeup_thread(mddev->sync_thread); + } set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); md_wakeup_thread(mddev->thread); sysfs_notify_dirent_safe(mddev->sysfs_action);