There is no point in trying to call bdev_read_page if SWP_SYNCHRONOUS_IO is not set, as the device won't support it. Also there is no point in trying a bio submission if bdev_read_page failed. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- mm/page_io.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/page_io.c b/mm/page_io.c index ccda7679008851..63b44b8221af0f 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -403,8 +403,11 @@ int swap_readpage(struct page *page, bool synchronous) goto out; } - ret = bdev_read_page(sis->bdev, swap_page_sector(page), page); - if (!ret) { + if (sis->flags & SWP_SYNCHRONOUS_IO) { + ret = bdev_read_page(sis->bdev, swap_page_sector(page), page); + if (ret) + goto out; + if (trylock_page(page)) { swap_slot_free_notify(page); unlock_page(page); -- 2.27.0