md: test mddev->flags more safely in md_check_recovery.
commit7a0a5355cb
md: Don't test all of mddev->flags at once. made most tests on mddev->flags safer, but missed one. When commit260fa034ef
md: avoid deadlock when dirty buffers during md_stop. added MD_STILL_CLOSED, this caused md_check_recovery to misbehave. It can think there is something to do but find nothing. This can lead to the md thread spinning during array shutdown. https://bugzilla.kernel.org/show_bug.cgi?id=65721 Reported-and-tested-by: Richard W.M. Jones <rjones@redhat.com> Fixes:260fa034ef
Cc: stable@vger.kernel.org (3.12) Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
0c775d5208
commit
142d44c310
@ -7777,7 +7777,7 @@ void md_check_recovery(struct mddev *mddev)
|
||||
if (mddev->ro && !test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))
|
||||
return;
|
||||
if ( ! (
|
||||
(mddev->flags & ~ (1<<MD_CHANGE_PENDING)) ||
|
||||
(mddev->flags & MD_UPDATE_SB_FLAGS & ~ (1<<MD_CHANGE_PENDING)) ||
|
||||
test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) ||
|
||||
test_bit(MD_RECOVERY_DONE, &mddev->recovery) ||
|
||||
(mddev->external == 0 && mddev->safemode == 1) ||
|
||||
|
Loading…
Reference in New Issue
Block a user