diff --git a/mm/filemap.c b/mm/filemap.c index d464f446d..2f7f99bd2 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2252,7 +2252,11 @@ readpage: } if (!PageUptodate(page)) { - error = lock_page_killable(page); + if (iocb->ki_flags & IOCB_WAITQ) + error = lock_page_async(page, iocb->ki_waitq); + else + error = lock_page_killable(page); + if (unlikely(error)) goto readpage_error; if (!PageUptodate(page)) {