diff options
author | NeilBrown <neilb@suse.de> | 2015-05-28 17:53:29 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2015-05-28 18:04:45 +1000 |
commit | 56ccc1125bc141cf63927eda7febff4216dea2d3 (patch) | |
tree | 3af5cac150be4c0cf4d2e0d46dc9fba1328b8670 /drivers/md/dm-io.c | |
parent | 626f2092c85ac847bb80b3257eb6a565dec32278 (diff) |
md: fix race when unfreezing sync_action
A recent change removed the need for locking around writing
to "sync_action" (and various other places), but introduced a
subtle race.
When e.g. setting 'reshape' on a 'frozen' array, the 'frozen'
flag is cleared before 'reshape' is set, so the md thread can
get in and start trying recovery - which isn't wanted.
So instead of clearing MD_RECOVERY_FROZEN for any command
except 'frozen', only clear it when each specific command
is parsed. This allows the handling of 'reshape' to clear
the bit while a lock is held.
Also remove some places where we set MD_RECOVERY_NEEDED,
as it is always set on non-error exit of the function.
Signed-off-by: NeilBrown <neilb@suse.de>
Fixes: 6791875e2e53 ("md: make reconfig_mutex optional for writes to md sysfs files.")
Diffstat (limited to 'drivers/md/dm-io.c')
0 files changed, 0 insertions, 0 deletions