diff options
| author | Theodore Ts'o <tytso@mit.edu> | 2015-01-22 15:40:07 -0500 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-05-27 19:39:54 +0200 |
| commit | 03634166aa26b85c026dfcaf8a8a66ea52aecc58 (patch) | |
| tree | 2af47f042921e5074cef1258c4d91d0ce43beb77 /fs/ext4/indirect.c | |
| parent | 56d6480a113d3a0d8914bb29611a6564760b935e (diff) | |
ext4: use old legacy direct I/O interface for 3.18 backport
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/indirect.c')
| -rw-r--r-- | fs/ext4/indirect.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c index 36b369697..8968ebd9f 100644 --- a/fs/ext4/indirect.c +++ b/fs/ext4/indirect.c @@ -643,7 +643,8 @@ out: * VFS code falls back into buffered path in that case so we are safe. */ ssize_t ext4_ind_direct_IO(int rw, struct kiocb *iocb, - struct iov_iter *iter, loff_t offset) + const struct iovec *iov, loff_t offset, + unsigned long nr_segs) { struct file *file = iocb->ki_filp; struct inode *inode = file->f_mapping->host; @@ -651,7 +652,7 @@ ssize_t ext4_ind_direct_IO(int rw, struct kiocb *iocb, handle_t *handle; ssize_t ret; int orphan = 0; - size_t count = iov_iter_count(iter); + size_t count = iov_length(iov, nr_segs); int retries = 0; if (rw == WRITE) { @@ -690,13 +691,14 @@ retry: goto locked; } ret = __blockdev_direct_IO(rw, iocb, inode, - inode->i_sb->s_bdev, iter, offset, + inode->i_sb->s_bdev, iov, + offset, nr_segs, ext4_get_block, NULL, NULL, 0); inode_dio_done(inode); } else { locked: - ret = blockdev_direct_IO(rw, iocb, inode, iter, - offset, ext4_get_block); + ret = blockdev_direct_IO(rw, iocb, inode, iov, + offset, nr_segs, ext4_get_block); if (unlikely((rw & WRITE) && ret < 0)) { loff_t isize = i_size_read(inode); |
