md/raid5: handle activation of replacement device when recovery completes.
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)
commitdd054fce88d33da1aa81d018db75b91b102a6959
tree9528caece6b444ebcdb41453b60a1bb4054a1a4d
parent9a3e1101b827a59ac9036a672f5fa8d5279d0fe2
md/raid5: handle activation of replacement device when recovery completes.

When recovery completes - as reported by a call to ->spare_active,
we clear In_sync on the original and set it on the replacement.

Then when the original gets removed we move the replacement from
'replacement' to 'rdev'.

This could race with other code that is looking at these pointers,
so we use memory barriers and careful ordering to ensure that
a reader might see one device twice, but never no devices.
Then the readers guard against using both devices, which could
only happen when writing.

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