Lines Matching refs:kiocb

24 	/* NOTE: kiocb has the file as the first member, so don't do it here */
25 struct kiocb kiocb;
82 rw->kiocb.ki_pos = READ_ONCE(sqe->off);
104 rw->kiocb.ki_ioprio = ioprio;
106 rw->kiocb.ki_ioprio = get_current_ioprio();
108 rw->kiocb.dio_complete = NULL;
133 static inline void io_rw_done(struct kiocb *kiocb, ssize_t ret)
150 kiocb->ki_complete(kiocb, ret);
158 if (rw->kiocb.ki_pos != -1)
159 return &rw->kiocb.ki_pos;
163 rw->kiocb.ki_pos = req->file->f_pos;
164 return &rw->kiocb.ki_pos;
167 rw->kiocb.ki_pos = 0;
229 kiocb_end_write(&rw->kiocb);
241 if (rw->kiocb.ki_flags & IOCB_WRITE) {
285 struct kiocb *kiocb = &rw->kiocb;
287 if ((kiocb->ki_flags & IOCB_DIO_CALLER_COMP) && kiocb->dio_complete) {
288 long res = kiocb->dio_complete(rw->kiocb.private);
303 static void io_complete_rw(struct kiocb *kiocb, long res)
305 struct io_rw *rw = container_of(kiocb, struct io_rw, kiocb);
308 if (!kiocb->dio_complete || !(kiocb->ki_flags & IOCB_DIO_CALLER_COMP)) {
317 static void io_complete_rw_iopoll(struct kiocb *kiocb, long res)
319 struct io_rw *rw = container_of(kiocb, struct io_rw, kiocb);
322 if (kiocb->ki_flags & IOCB_WRITE)
343 req->file->f_pos = rw->kiocb.ki_pos;
344 if (ret >= 0 && (rw->kiocb.ki_complete == io_complete_rw)) {
356 io_rw_done(&rw->kiocb, ret);
427 static inline loff_t *io_kiocb_ppos(struct kiocb *kiocb)
429 return (kiocb->ki_filp->f_mode & FMODE_STREAM) ? NULL : &kiocb->ki_pos;
438 struct kiocb *kiocb = &rw->kiocb;
439 struct file *file = kiocb->ki_filp;
446 * the kiocb to be handled from an async context.
448 if (kiocb->ki_flags & IOCB_HIPRI)
450 if ((kiocb->ki_flags & IOCB_NOWAIT) &&
451 !(kiocb->ki_filp->f_flags & O_NONBLOCK))
454 ppos = io_kiocb_ppos(kiocb);
601 rw->kiocb.ki_flags &= ~IOCB_WAITQ;
624 struct kiocb *kiocb = &rw->kiocb;
631 if (kiocb->ki_flags & (IOCB_DIRECT | IOCB_HIPRI))
645 kiocb->ki_flags |= IOCB_WAITQ;
646 kiocb->ki_flags &= ~IOCB_NOWAIT;
647 kiocb->ki_waitq = wait;
653 struct file *file = rw->kiocb.ki_filp;
656 return call_read_iter(file, &rw->kiocb, iter);
672 struct kiocb *kiocb = &rw->kiocb;
683 kiocb->ki_flags = file->f_iocb_flags;
684 ret = kiocb_set_rw_flags(kiocb, rw->flags);
687 kiocb->ki_flags |= IOCB_ALLOC_CACHE;
694 if ((kiocb->ki_flags & IOCB_NOWAIT) ||
699 if (!(kiocb->ki_flags & IOCB_DIRECT) || !file->f_op->iopoll)
702 kiocb->private = NULL;
703 kiocb->ki_flags |= IOCB_HIPRI;
704 kiocb->ki_complete = io_complete_rw_iopoll;
707 if (kiocb->ki_flags & IOCB_HIPRI)
709 kiocb->ki_complete = io_complete_rw;
720 struct kiocb *kiocb = &rw->kiocb;
765 kiocb->ki_flags |= IOCB_NOWAIT;
768 kiocb->ki_flags &= ~IOCB_NOWAIT;
838 kiocb->ki_flags &= ~IOCB_WAITQ;
853 kiocb->ki_flags &= ~IOCB_WAITQ;
868 struct kiocb *kiocb = &rw->kiocb;
897 if (!(kiocb->ki_flags & IOCB_DIRECT) &&
898 !(kiocb->ki_filp->f_mode & FMODE_BUF_WASYNC) &&
902 kiocb->ki_flags |= IOCB_NOWAIT;
905 kiocb->ki_flags &= ~IOCB_NOWAIT;
917 kiocb_start_write(kiocb);
918 kiocb->ki_flags |= IOCB_WRITE;
921 ret2 = call_write_iter(req->file, kiocb, &s->iter);
936 if (ret2 == -EOPNOTSUPP && (kiocb->ki_flags & IOCB_NOWAIT))
949 trace_io_uring_short_write(req->ctx, kiocb->ki_pos - ret2,
964 if (kiocb->ki_flags & IOCB_WRITE)
975 if (kiocb->ki_flags & IOCB_WRITE)
1031 ret = file->f_op->iopoll(&rw->kiocb, &iob, poll_flags);