X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=mm%2Fpage_io.c;h=e4e6a4f57b09f2c304683e026a8dab05f98a500d;hb=d09f4bdc4b8feadbb3326d4e6e0890556b19bf07;hp=8c79a4764be0c99a1d573d174e2d247e90079519;hpb=267666ea3bd6e804c2c8bbafbe628026be963d06;p=karo-tx-linux.git diff --git a/mm/page_io.c b/mm/page_io.c index 8c79a4764be0..e4e6a4f57b09 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -258,11 +258,14 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, if (sis->flags & SWP_FILE) { struct kiocb kiocb; struct file *swap_file = sis->swap_file; - struct address_space *mapping = swap_file->f_mapping; - struct iovec iov = { - .iov_base = kmap(page), - .iov_len = PAGE_SIZE, + struct bio_vec bvec = { + .bv_page = kmap(page), + .bv_len = PAGE_SIZE, + .bv_offset = 0, }; + struct iov_iter iter; + + iov_iter_init_bvec(&iter, &bvec, 1, PAGE_SIZE, 0); init_sync_kiocb(&kiocb, swap_file); kiocb.ki_pos = page_file_offset(page); @@ -270,9 +273,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, set_page_writeback(page); unlock_page(page); - ret = mapping->a_ops->direct_IO(KERNEL_WRITE, - &kiocb, &iov, - kiocb.ki_pos, 1); + ret = swap_file->f_op->write_iter(&kiocb, &iter, kiocb.ki_pos); kunmap(page); if (ret == PAGE_SIZE) { count_vm_event(PSWPOUT);