md/raid5: detect and handle replacements during recovery.
authorNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 23:17:53 +0000 (10:17 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 23:17:53 +0000 (10:17 +1100)
commit9a3e1101b827a59ac9036a672f5fa8d5279d0fe2
tree9e629fbc1bab31b588c475181246bbe30778f67a
parent977df36255ab0ea78b048cbc9055300c586dcc91
md/raid5:  detect and handle replacements during recovery.

During recovery we want to write to the replacement but not
the original.  So we have two new flags
 - R5_NeedReplace if this stripe has a replacement that needs to
   be written at some stage
 - R5_WantReplace if NeedReplace, and the data is available, and
   a 'sync' has been requested on this stripe.

We also distinguish between 'sync and replace' which need to read
all other devices, and 'replace' which only needs to read the
devices being replaced.

Note that during resync we always write to any replacement device.
It might not need to be written to, but as we don't read to compare,
we have to write to be sure.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c
drivers/md/raid5.h