mm: fix polled swap page in
Subsystems (2)
PATCH 1/1 mm: fix polled swap page in
swap_readpage() wants to do polling to bring in pages if asked to, but it doesn't mark the bio as being polled. Additionally, the looping around the blk_poll() check isn't correct - if we get a zero return, we should call io_schedule(), we can't just assume that the bio has completed. The regular bio->bi_private check should be used for that.
Signed-off-by Jens Axboe <[email protected]>
---
mm/page_io.c +3 -1
@@ -401,6 +401,8 @@ int swap_readpage(struct page *page, bool synchronous)get_task_struct (current); bio->bi_private = current;bio_set_op_attrs (bio,REQ_OP_READ ,0 ); +if (synchronous) + bio->bi_opf |=REQ_HIPRI ;count_vm_event (PSWPIN );bio_get (bio); qc =submit_bio (bio);
@@ -411,7 +413,7 @@ int swap_readpage(struct page *page, bool synchronous)break ;if (!blk_poll (disk->queue, qc, true)) -break ; +io_schedule (); }__set_current_state (TASK_RUNNING );bio_put (bio);
Signature · 1 line
Jens Axboe