summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/page_io.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/page_io.c b/mm/page_io.c
index d4d1c89bcddd..3475733b1926 100644
--- a/mm/page_io.c
+++ b/mm/page_io.c
@@ -140,7 +140,7 @@ out:
140 unlock_page(page); 140 unlock_page(page);
141 WRITE_ONCE(bio->bi_private, NULL); 141 WRITE_ONCE(bio->bi_private, NULL);
142 bio_put(bio); 142 bio_put(bio);
143 wake_up_process(waiter); 143 blk_wake_io_task(waiter);
144 put_task_struct(waiter); 144 put_task_struct(waiter);
145} 145}
146 146
@@ -339,7 +339,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
339 goto out; 339 goto out;
340 } 340 }
341 bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc); 341 bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc);
342 bio_associate_blkcg_from_page(bio, page); 342 bio_associate_blkg_from_page(bio, page);
343 count_swpout_vm_event(page); 343 count_swpout_vm_event(page);
344 set_page_writeback(page); 344 set_page_writeback(page);
345 unlock_page(page); 345 unlock_page(page);
@@ -405,11 +405,12 @@ int swap_readpage(struct page *page, bool synchronous)
405 bio_get(bio); 405 bio_get(bio);
406 qc = submit_bio(bio); 406 qc = submit_bio(bio);
407 while (synchronous) { 407 while (synchronous) {
408 set_current_state(TASK_UNINTERRUPTIBLE); 408 __set_current_state(TASK_UNINTERRUPTIBLE);
409
409 if (!READ_ONCE(bio->bi_private)) 410 if (!READ_ONCE(bio->bi_private))
410 break; 411 break;
411 412
412 if (!blk_poll(disk->queue, qc)) 413 if (!blk_poll(disk->queue, qc, true))
413 break; 414 break;
414 } 415 }
415 __set_current_state(TASK_RUNNING); 416 __set_current_state(TASK_RUNNING);