Lines Matching refs:iocb

35 static ssize_t ext2_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)  in ext2_dax_read_iter()  argument
37 struct inode *inode = iocb->ki_filp->f_mapping->host; in ext2_dax_read_iter()
44 ret = dax_iomap_rw(iocb, to, &ext2_iomap_ops); in ext2_dax_read_iter()
47 file_accessed(iocb->ki_filp); in ext2_dax_read_iter()
51 static ssize_t ext2_dax_write_iter(struct kiocb *iocb, struct iov_iter *from) in ext2_dax_write_iter() argument
53 struct file *file = iocb->ki_filp; in ext2_dax_write_iter()
58 ret = generic_write_checks(iocb, from); in ext2_dax_write_iter()
68 ret = dax_iomap_rw(iocb, from, &ext2_iomap_ops); in ext2_dax_write_iter()
69 if (ret > 0 && iocb->ki_pos > i_size_read(inode)) { in ext2_dax_write_iter()
70 i_size_write(inode, iocb->ki_pos); in ext2_dax_write_iter()
77 ret = generic_write_sync(iocb, ret); in ext2_dax_write_iter()
168 static ssize_t ext2_dio_read_iter(struct kiocb *iocb, struct iov_iter *to) in ext2_dio_read_iter() argument
170 struct file *file = iocb->ki_filp; in ext2_dio_read_iter()
174 trace_ext2_dio_read_begin(iocb, to, 0); in ext2_dio_read_iter()
176 ret = iomap_dio_rw(iocb, to, &ext2_iomap_ops, NULL, 0, NULL, 0); in ext2_dio_read_iter()
178 trace_ext2_dio_read_end(iocb, to, ret); in ext2_dio_read_iter()
183 static int ext2_dio_write_end_io(struct kiocb *iocb, ssize_t size, in ext2_dio_write_end_io() argument
186 loff_t pos = iocb->ki_pos; in ext2_dio_write_end_io()
187 struct inode *inode = file_inode(iocb->ki_filp); in ext2_dio_write_end_io()
206 trace_ext2_dio_write_endio(iocb, size, error); in ext2_dio_write_end_io()
214 static ssize_t ext2_dio_write_iter(struct kiocb *iocb, struct iov_iter *from) in ext2_dio_write_iter() argument
216 struct file *file = iocb->ki_filp; in ext2_dio_write_iter()
221 loff_t offset = iocb->ki_pos; in ext2_dio_write_iter()
225 trace_ext2_dio_write_begin(iocb, from, 0); in ext2_dio_write_iter()
227 ret = generic_write_checks(iocb, from); in ext2_dio_write_iter()
231 ret = kiocb_modified(iocb); in ext2_dio_write_iter()
236 if (iocb->ki_pos + iov_iter_count(from) > i_size_read(inode) || in ext2_dio_write_iter()
237 (!IS_ALIGNED(iocb->ki_pos | iov_iter_alignment(from), blocksize))) in ext2_dio_write_iter()
240 ret = iomap_dio_rw(iocb, from, &ext2_iomap_ops, &ext2_dio_write_ops, in ext2_dio_write_iter()
255 iocb->ki_flags &= ~IOCB_DIRECT; in ext2_dio_write_iter()
256 pos = iocb->ki_pos; in ext2_dio_write_iter()
257 status = generic_perform_write(iocb, from); in ext2_dio_write_iter()
272 generic_write_sync(iocb, ret); in ext2_dio_write_iter()
278 trace_ext2_dio_write_buff_end(iocb, from, status); in ext2_dio_write_iter()
279 trace_ext2_dio_write_end(iocb, from, ret); in ext2_dio_write_iter()
283 static ssize_t ext2_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in ext2_file_read_iter() argument
286 if (IS_DAX(iocb->ki_filp->f_mapping->host)) in ext2_file_read_iter()
287 return ext2_dax_read_iter(iocb, to); in ext2_file_read_iter()
289 if (iocb->ki_flags & IOCB_DIRECT) in ext2_file_read_iter()
290 return ext2_dio_read_iter(iocb, to); in ext2_file_read_iter()
292 return generic_file_read_iter(iocb, to); in ext2_file_read_iter()
295 static ssize_t ext2_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in ext2_file_write_iter() argument
298 if (IS_DAX(iocb->ki_filp->f_mapping->host)) in ext2_file_write_iter()
299 return ext2_dax_write_iter(iocb, from); in ext2_file_write_iter()
301 if (iocb->ki_flags & IOCB_DIRECT) in ext2_file_write_iter()
302 return ext2_dio_write_iter(iocb, from); in ext2_file_write_iter()
304 return generic_file_write_iter(iocb, from); in ext2_file_write_iter()