]> git.baikalelectronics.ru Git - kernel.git/commit
md/raid10: fix two bugs in handling of known-bad-blocks.
authorNeilBrown <neilb@suse.de>
Mon, 13 Jan 2014 23:38:09 +0000 (10:38 +1100)
committerNeilBrown <neilb@suse.de>
Tue, 14 Jan 2014 05:44:07 +0000 (16:44 +1100)
commitdd65c66af910b621363fa9ec2677f099905f8849
tree146cf33b0f029effcf8c9c413627558979093ce7
parent8710ae43b6dd5dc0935dea03102f937604cb7790
md/raid10: fix two bugs in handling of known-bad-blocks.

If we discover a bad block when reading we split the request and
potentially read some of it from a different device.

The code path of this has two bugs in RAID10.
1/ we get a spin_lock with _irq, but unlock without _irq!!
2/ The calculation of 'sectors_handled' is wrong, as can be clearly
   seen by comparison with raid1.c

This leads to at least 2 warnings and a probable crash is a RAID10
ever had known bad blocks.

Cc: stable@vger.kernel.org (v3.1+)
Fixes: 671540edb5180c6d1567d430b06d9a7b3374b481
Reported-by: Damian Nowak <spam@nowaker.net>
URL: https://bugzilla.kernel.org/show_bug.cgi?id=68181
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid10.c