diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 1fb28c56457a..2c8907706109 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2056,6 +2056,9 @@ static void raid5_end_read_request(struct bio * bi, int error) mdname(conf->mddev), bdn); else retry = 1; + if (set_bad && test_bit(In_sync, &rdev->flags) + && !test_bit(R5_ReadNoMerge, &sh->dev[i].flags)) + retry = 1; if (retry) if (test_bit(R5_ReadNoMerge, &sh->dev[i].flags)) { set_bit(R5_ReadError, &sh->dev[i].flags);