]> git.karo-electronics.de Git - karo-tx-linux.git/commit
md/raid1: fix bio handling problems in process_checks()
authorNeilBrown <neilb@suse.de>
Wed, 17 Jul 2013 05:19:29 +0000 (15:19 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 17 Jul 2013 05:19:29 +0000 (15:19 +1000)
commitff9db744adce4f515798f1ae2804d66e6a4992d4
tree572b7807a3eb04c0bd862699b79c31751b2416b8
parent7a4c6f3581fcac9326a6fc7d7f3278df2eeeeaec
md/raid1: fix bio handling problems in process_checks()

Recent change to use bio_copy_data() in raid1 when repairing
an array is faulty.

The underlying may have changed the bio in various ways using
bio_advance and these need to be undone not just for the 'sbio' which
is being copied to, but also the 'pbio' (primary) which is being
copied from.

So perform the reset on all bios that were read from and do it early.

This also ensure that the sbio->bi_io_vec[j].bv_len passed to
memcmp is correct.

This fixes a crash during a 'check' of a RAID1 array.  The crash was
introduced in 3.10 so this is suitable for 3.10-stable.

Cc: stable@vger.kernel.org (3.10)
Reported-by: Joe Lawrence <joe.lawrence@stratus.com>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid1.c