Lines Matching defs:iter
717 struct iov_iter iter;
2700 iov_iter_restore(&rw->iter, &rw->iter_state);
3113 static int __io_import_fixed(struct io_kiocb *req, int rw, struct iov_iter *iter,
3131 iov_iter_bvec(iter, rw, imu->bvec, imu->nr_bvecs, offset + len);
3140 * 1) it's a BVEC iter, we set it up
3153 iov_iter_advance(iter, offset);
3161 iter->bvec = bvec + seg_skip;
3162 iter->nr_segs -= seg_skip;
3163 iter->count -= bvec->bv_len + offset;
3164 iter->iov_offset = offset & ~PAGE_MASK;
3171 static int io_import_fixed(struct io_kiocb *req, int rw, struct iov_iter *iter)
3175 return __io_import_fixed(req, rw, iter, req->imu);
3317 struct iov_iter *iter, bool needs_lock)
3326 return io_import_fixed(req, rw, iter);
3341 ret = import_single_range(rw, buf, sqe_len, *iovec, iter);
3349 iov_iter_init(iter, rw, *iovec, 1, (*iovec)->iov_len);
3354 return __import_iovec(rw, buf, sqe_len, UIO_FASTIOV, iovec, iter,
3367 static ssize_t loop_rw_iter(int rw, struct io_kiocb *req, struct iov_iter *iter)
3386 while (iov_iter_count(iter)) {
3390 if (!iov_iter_is_bvec(iter)) {
3391 iovec = iov_iter_iovec(iter);
3411 if (!iov_iter_is_bvec(iter)) {
3412 iov_iter_advance(iter, nr);
3427 const struct iovec *fast_iov, struct iov_iter *iter)
3431 memcpy(&rw->iter, iter, sizeof(*iter));
3435 if (iov_iter_is_bvec(iter))
3440 rw->iter.iov = rw->fast_iov;
3441 if (iter->iov != fast_iov) {
3442 iov_off = iter->iov - fast_iov;
3443 rw->iter.iov += iov_off;
3447 sizeof(struct iovec) * iter->nr_segs);
3462 struct iov_iter *iter, bool force)
3474 io_req_map_rw(req, iovec, fast_iov, iter);
3476 /* we've copied and mapped the iter, ensure state is saved */
3477 iov_iter_save_state(&iorw->iter, &iorw->iter_state);
3491 ret = io_import_iovec(rw, req, &iov, &iorw->iter, false);
3499 iov_iter_save_state(&iorw->iter, &iorw->iter_state);
3581 static inline int io_iter_do_read(struct io_kiocb *req, struct iov_iter *iter)
3584 return call_read_iter(req->file, &req->rw.kiocb, iter);
3586 return loop_rw_iter(READ, req, iter);
3601 struct iov_iter __iter, *iter = &__iter;
3609 iter = &rw->iter;
3616 iov_iter_restore(iter, state);
3619 ret = io_import_iovec(READ, req, &iovec, iter, !force_nonblock);
3623 iov_iter_save_state(iter, state);
3625 req->result = iov_iter_count(iter);
3635 ret = io_setup_async_rw(req, iovec, inline_vecs, iter, true);
3647 ret = io_iter_do_read(req, iter);
3667 * Don't depend on the iter state matching what was consumed, or being
3671 iov_iter_restore(iter, state);
3673 ret2 = io_setup_async_rw(req, iovec, inline_vecs, iter, true);
3681 * We've restored and mapped the iter to match.
3683 if (iter != &rw->iter) {
3684 iter = &rw->iter;
3691 * above or inside this loop. Advance the iter by the bytes
3694 iov_iter_advance(iter, ret);
3695 if (!iov_iter_count(iter))
3698 iov_iter_save_state(iter, state);
3706 req->result = iov_iter_count(iter);
3713 ret = io_iter_do_read(req, iter);
3718 iov_iter_restore(iter, state);
3740 struct iov_iter __iter, *iter = &__iter;
3748 iter = &rw->iter;
3750 iov_iter_restore(iter, state);
3753 ret = io_import_iovec(WRITE, req, &iovec, iter, !force_nonblock);
3757 iov_iter_save_state(iter, state);
3759 req->result = iov_iter_count(iter);
3797 ret2 = call_write_iter(req->file, kiocb, iter);
3799 ret2 = loop_rw_iter(WRITE, req, iter);
3825 iov_iter_restore(iter, state);
3826 ret = io_setup_async_rw(req, iovec, inline_vecs, iter, false);