]> git.baikalelectronics.ru Git - kernel.git/commit
md/raid10: Don't call bitmap_cond_end_sync when we are doing recovery.
authorNeilBrown <neilb@suse.de>
Wed, 25 Feb 2009 02:18:47 +0000 (13:18 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 25 Feb 2009 02:18:47 +0000 (13:18 +1100)
commit70f5810fdaf9a4c3e4fa0035b8d17a4709348e72
treebda4b9d8607410d01f819b6789b58d74188c915b
parent11e16d3c9fa479e53ee20b173bee433745eab0f6
md/raid10:  Don't call bitmap_cond_end_sync when we are doing recovery.

For raid1/4/5/6, resync (fixing inconsistencies between devices) is
very similar to recovery (rebuilding a failed device onto a spare).
The both walk through the device addresses in order.

For raid10 it can be quite different.  resync follows the 'array'
address, and makes sure all copies are the same.  Recover walks
through 'device' addresses and recreates each missing block.

The 'bitmap_cond_end_sync' function allows the write-intent-bitmap
(When present) to be updated to reflect a partially completed resync.
It makes assumptions which mean that it does not work correctly for
raid10 recovery at all.

In particularly, it can cause bitmap-directed recovery of a raid10 to
not recovery some of the blocks that need to be recovered.

So move the call to bitmap_cond_end_sync into the resync path, rather
than being in the common "resync or recovery" path.

Cc: stable@kernel.org
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid10.c