md: writing to sync_action should clear the read-auto state.
In some cases array are started in 'read-auto' state where in nothing gets written to any device until the array is written to. The purpose of this is to make accidental auto-assembly of the wrong arrays less of a risk, and to allow arrays to be started to read suspend-to-disk images without actually changing anything (as might happen if the array were dirty and a resync seemed necessary). Explicitly writing the 'sync_action' for a read-auto array currently doesn't clear the read-auto state, so the sync action doesn't happen, which can be confusing. So allow any successful write to sync_action to clear any read-auto state. Reported-by: Alexander Kühn <alexander.kuehn@nagilum.de> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
7f7583d420
commit
48c26ddc9f
@ -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_REQUESTED, &mddev->recovery);
|
||||||
set_bit(MD_RECOVERY_SYNC, &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);
|
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
||||||
md_wakeup_thread(mddev->thread);
|
md_wakeup_thread(mddev->thread);
|
||||||
sysfs_notify_dirent_safe(mddev->sysfs_action);
|
sysfs_notify_dirent_safe(mddev->sysfs_action);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user