diff options
Diffstat (limited to 'mm/page_io.c')
-rw-r--r-- | mm/page_io.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/page_io.c b/mm/page_io.c index 7c59ef681381..0ed0644c73db 100644 --- a/mm/page_io.c +++ b/mm/page_io.c | |||
@@ -263,16 +263,18 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, | |||
263 | .iov_base = kmap(page), | 263 | .iov_base = kmap(page), |
264 | .iov_len = PAGE_SIZE, | 264 | .iov_len = PAGE_SIZE, |
265 | }; | 265 | }; |
266 | struct iov_iter from; | ||
266 | 267 | ||
267 | init_sync_kiocb(&kiocb, swap_file); | 268 | init_sync_kiocb(&kiocb, swap_file); |
268 | kiocb.ki_pos = page_file_offset(page); | 269 | kiocb.ki_pos = page_file_offset(page); |
269 | kiocb.ki_nbytes = PAGE_SIZE; | 270 | kiocb.ki_nbytes = PAGE_SIZE; |
271 | iov_iter_init(&from, &iov, 1, PAGE_SIZE, 0); | ||
270 | 272 | ||
271 | set_page_writeback(page); | 273 | set_page_writeback(page); |
272 | unlock_page(page); | 274 | unlock_page(page); |
273 | ret = mapping->a_ops->direct_IO(KERNEL_WRITE, | 275 | ret = mapping->a_ops->direct_IO(KERNEL_WRITE, |
274 | &kiocb, &iov, | 276 | &kiocb, &from, |
275 | kiocb.ki_pos, 1); | 277 | kiocb.ki_pos); |
276 | kunmap(page); | 278 | kunmap(page); |
277 | if (ret == PAGE_SIZE) { | 279 | if (ret == PAGE_SIZE) { |
278 | count_vm_event(PSWPOUT); | 280 | count_vm_event(PSWPOUT); |