diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page_io.c | 9 |
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); |