aboutsummaryrefslogtreecommitdiff
path: root/kernel/time
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-07-16 16:50:47 +1000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-25 14:07:28 -0700
commit2dc04d3333049098691eb652e06d52fbd80771d2 (patch)
tree368daf6f090dbbb6402bcbcc5c287c8254617cbf /kernel/time
parent4b5c14511c401edf5ea78e2592c7043456deb595 (diff)
md/raid10: fix two problems with RAID10 resync.
commit 7bb23c4934059c64cbee2e41d5d24ce122285176 upstream. 1/ When an different between blocks is found, data is copied from one bio to the other. However bv_len is used as the length to copy and this could be zero. So use r10_bio->sectors to calculate length instead. Using bv_len was probably always a bit dubious, but the introduction of bio_advance made it much more likely to be a problem. 2/ When preparing some blocks for sync, we don't set BIO_UPTODATE except on bios that we schedule for a read. This ensures that missing/failed devices don't confuse the loop at the top of sync_request write. Commit 8be185f2c9d54d6 "raid10: Use bio_reset()" removed a loop which set BIO_UPTDATE on all appropriate bios. So we need to re-add that flag. These bugs were introduced in 3.10, so this patch is suitable for 3.10-stable, and can remove a potential for data corruption. Reported-by: Brassow Jonathan <jbrassow@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/time')
0 files changed, 0 insertions, 0 deletions