md: don't give up looking for spares on first failure-to-add
authorNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 22:57:19 +0000 (09:57 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 22:57:19 +0000 (09:57 +1100)
commit60fc13702a1b35118c1548e9c257fa038cecb658
tree163094eb4ae229f9263bfd05b788f29cc14e94f5
parent30d7a4836847bdb10b32c78a4879d4aebe0f193b
md: don't give up looking for spares on first failure-to-add

Before performing a recovery we try to remove any spares that
might not be working, then add any that might have become relevant.

Currently we abort on the first spare that cannot be added.
This is a false optimisation.
It is conceivable that - depending on rules in the personality - a
subsequent spare might be accepted.
Also the loop does other things like count the available spares and
reset the 'recovery_offset' value.

If we abort early these might not happen properly.

So remove the early abort.

In particular if you have an array what is undergoing recovery and
which has extra spares, then the recovery may not restart after as
reboot as the could of 'spares' might end up as zero.

Reported-by: Anssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c