diff --git a/mm/filemap.c b/mm/filemap.c index 5bffaa2176cd..50bdd76fd080 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2823,6 +2823,14 @@ static struct page *do_read_cache_page(struct address_space *mapping, unlock_page(page); goto out; } + + /* + * A previous I/O error may have been due to temporary + * failures. + * Clear page error before actual read, PG_error will be + * set again if read page fails. + */ + ClearPageError(page); goto filler; out: