diff options
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r-- | drivers/md/raid1.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 71a7dc038a82..22cfc6660b18 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -1859,7 +1859,9 @@ static void fix_read_error(struct r1conf *conf, int read_disk, | |||
1859 | 1859 | ||
1860 | rdev = conf->mirrors[d].rdev; | 1860 | rdev = conf->mirrors[d].rdev; |
1861 | if (rdev && | 1861 | if (rdev && |
1862 | test_bit(In_sync, &rdev->flags) && | 1862 | (test_bit(In_sync, &rdev->flags) || |
1863 | (!test_bit(Faulty, &rdev->flags) && | ||
1864 | rdev->recovery_offset >= sect + s)) && | ||
1863 | is_badblock(rdev, sect, s, | 1865 | is_badblock(rdev, sect, s, |
1864 | &first_bad, &bad_sectors) == 0 && | 1866 | &first_bad, &bad_sectors) == 0 && |
1865 | sync_page_io(rdev, sect, s<<9, | 1867 | sync_page_io(rdev, sect, s<<9, |