md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN
authorNeilBrown <neilb@suse.de>
Tue, 28 Oct 2014 21:49:50 +0000 (08:49 +1100)
committerNeilBrown <neilb@suse.de>
Sun, 16 Nov 2014 22:17:46 +0000 (09:17 +1100)
commit45eaf45dfa4850df16bc2e8e7903d89021137f40
tree623ac0e21c0f21c851c4dcffe8b317d41aafdb98
parent206c5f60a3d902bc4b56dab2de3e88de5eb06108
md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN

md_check_recovery will skip any recovery and also clear
MD_RECOVERY_NEEDED if MD_RECOVERY_FROZEN is set.
So when we clear _FROZEN, we must set _NEEDED and ensure that
md_check_recovery gets run.
Otherwise we could miss out on something that is needed.

In particular, this can make it impossible to remove a
failed device from an array is the  'recovery-needed' processing
didn't happen.
Suitable for stable kernels since 3.13.

Cc: stable@vger.kernel.org (3.13+)
Reported-and-tested-by: Joe Lawrence <joe.lawrence@stratus.com>
Fixes: 30b8feb730f9b9b3c5de02580897da03f59b6b16
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c