diff --git a/[refs] b/[refs] index ad8e9be0ffc3..3e69ffe2aa29 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4fa2f327681808f653711e14203a42cf4644bda0 +refs/heads/master: da8840a747c0dbf49506ec906757a6b87b9741e9 diff --git a/trunk/drivers/md/raid1.c b/trunk/drivers/md/raid1.c index 71a7dc038a82..22cfc6660b18 100644 --- a/trunk/drivers/md/raid1.c +++ b/trunk/drivers/md/raid1.c @@ -1859,7 +1859,9 @@ static void fix_read_error(struct r1conf *conf, int read_disk, rdev = conf->mirrors[d].rdev; if (rdev && - test_bit(In_sync, &rdev->flags) && + (test_bit(In_sync, &rdev->flags) || + (!test_bit(Faulty, &rdev->flags) && + rdev->recovery_offset >= sect + s)) && is_badblock(rdev, sect, s, &first_bad, &bad_sectors) == 0 && sync_page_io(rdev, sect, s<<9,