Lines Matching defs:iocb

35 static ssize_t ext2_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
37 struct inode *inode = iocb->ki_filp->f_mapping->host;
44 ret = dax_iomap_rw(iocb, to, &ext2_iomap_ops);
47 file_accessed(iocb->ki_filp);
51 static ssize_t ext2_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
53 struct file *file = iocb->ki_filp;
58 ret = generic_write_checks(iocb, from);
68 ret = dax_iomap_rw(iocb, from, &ext2_iomap_ops);
69 if (ret > 0 && iocb->ki_pos > i_size_read(inode)) {
70 i_size_write(inode, iocb->ki_pos);
77 ret = generic_write_sync(iocb, ret);
166 static ssize_t ext2_dio_read_iter(struct kiocb *iocb, struct iov_iter *to)
168 struct file *file = iocb->ki_filp;
172 trace_ext2_dio_read_begin(iocb, to, 0);
174 ret = iomap_dio_rw(iocb, to, &ext2_iomap_ops, NULL, 0, NULL, 0);
176 trace_ext2_dio_read_end(iocb, to, ret);
181 static int ext2_dio_write_end_io(struct kiocb *iocb, ssize_t size,
184 loff_t pos = iocb->ki_pos;
185 struct inode *inode = file_inode(iocb->ki_filp);
204 trace_ext2_dio_write_endio(iocb, size, error);
212 static ssize_t ext2_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
214 struct file *file = iocb->ki_filp;
219 loff_t offset = iocb->ki_pos;
223 trace_ext2_dio_write_begin(iocb, from, 0);
225 ret = generic_write_checks(iocb, from);
229 ret = kiocb_modified(iocb);
234 if (iocb->ki_pos + iov_iter_count(from) > i_size_read(inode) ||
235 (!IS_ALIGNED(iocb->ki_pos | iov_iter_alignment(from), blocksize)))
238 ret = iomap_dio_rw(iocb, from, &ext2_iomap_ops, &ext2_dio_write_ops,
253 iocb->ki_flags &= ~IOCB_DIRECT;
254 pos = iocb->ki_pos;
255 status = generic_perform_write(iocb, from);
270 generic_write_sync(iocb, ret);
276 trace_ext2_dio_write_buff_end(iocb, from, status);
277 trace_ext2_dio_write_end(iocb, from, ret);
281 static ssize_t ext2_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
284 if (IS_DAX(iocb->ki_filp->f_mapping->host))
285 return ext2_dax_read_iter(iocb, to);
287 if (iocb->ki_flags & IOCB_DIRECT)
288 return ext2_dio_read_iter(iocb, to);
290 return generic_file_read_iter(iocb, to);
293 static ssize_t ext2_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
296 if (IS_DAX(iocb->ki_filp->f_mapping->host))
297 return ext2_dax_write_iter(iocb, from);
299 if (iocb->ki_flags & IOCB_DIRECT)
300 return ext2_dio_write_iter(iocb, from);
302 return generic_file_write_iter(iocb, from);