--- y/mm/filemap.c +++ f/mm/filemap.c @@ -3527,7 +3527,12 @@ filler: return ERR_PTR(err); } - folio_wait_locked(folio); + for (;;) { + if (folio_test_locked(folio)) + schedule_timeout_idle(2 * HZ); + else + break; + } if (!folio_test_uptodate(folio)) { folio_put(folio); return ERR_PTR(-EIO);