md/raid10: simplify read error handling during recovery.
If a read error is detected during recovery the code currently fails the read device. This isn't really necessary. recovery_request_write will signal a write error to end_sync_write and it will record a write error on the destination device which will record a bad block there or kick it from the array. So just remove this call to do md_error. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
1a0b7cd826
commit
e684e41db3
@ -1418,13 +1418,12 @@ static void end_sync_read(struct bio *bio, int error)
|
||||
|
||||
if (test_bit(BIO_UPTODATE, &bio->bi_flags))
|
||||
set_bit(R10BIO_Uptodate, &r10_bio->state);
|
||||
else {
|
||||
else
|
||||
/* The write handler will notice the lack of
|
||||
* R10BIO_Uptodate and record any errors etc
|
||||
*/
|
||||
atomic_add(r10_bio->sectors,
|
||||
&conf->mirrors[d].rdev->corrected_errors);
|
||||
if (!test_bit(MD_RECOVERY_SYNC, &conf->mddev->recovery))
|
||||
md_error(r10_bio->mddev,
|
||||
conf->mirrors[d].rdev);
|
||||
}
|
||||
|
||||
/* for reconstruct, we always reschedule after a read.
|
||||
* for resync, only after all reads
|
||||
|
Loading…
Reference in New Issue
Block a user