Lines Matching refs:rreq
21 struct netfs_io_request *rreq = subreq->rreq; in netfs_prepare_dio_read_iterator() local
24 rsize = umin(subreq->len, rreq->io_streams[0].sreq_max_len); in netfs_prepare_dio_read_iterator()
27 if (unlikely(rreq->io_streams[0].sreq_max_segs)) { in netfs_prepare_dio_read_iterator()
28 size_t limit = netfs_limit_iter(&rreq->buffer.iter, 0, rsize, in netfs_prepare_dio_read_iterator()
29 rreq->io_streams[0].sreq_max_segs); in netfs_prepare_dio_read_iterator()
39 subreq->io_iter = rreq->buffer.iter; in netfs_prepare_dio_read_iterator()
41 iov_iter_advance(&rreq->buffer.iter, subreq->len); in netfs_prepare_dio_read_iterator()
48 static int netfs_dispatch_unbuffered_reads(struct netfs_io_request *rreq) in netfs_dispatch_unbuffered_reads() argument
50 struct netfs_io_stream *stream = &rreq->io_streams[0]; in netfs_dispatch_unbuffered_reads()
51 unsigned long long start = rreq->start; in netfs_dispatch_unbuffered_reads()
52 ssize_t size = rreq->len; in netfs_dispatch_unbuffered_reads()
59 subreq = netfs_alloc_subrequest(rreq); in netfs_dispatch_unbuffered_reads()
71 spin_lock(&rreq->lock); in netfs_dispatch_unbuffered_reads()
82 spin_unlock(&rreq->lock); in netfs_dispatch_unbuffered_reads()
85 if (rreq->netfs_ops->prepare_read) { in netfs_dispatch_unbuffered_reads()
86 ret = rreq->netfs_ops->prepare_read(subreq); in netfs_dispatch_unbuffered_reads()
97 rreq->submitted += slice; in netfs_dispatch_unbuffered_reads()
100 set_bit(NETFS_RREQ_ALL_QUEUED, &rreq->flags); in netfs_dispatch_unbuffered_reads()
103 rreq->netfs_ops->issue_read(subreq); in netfs_dispatch_unbuffered_reads()
105 if (test_bit(NETFS_RREQ_PAUSE, &rreq->flags)) in netfs_dispatch_unbuffered_reads()
106 netfs_wait_for_paused_read(rreq); in netfs_dispatch_unbuffered_reads()
107 if (test_bit(NETFS_RREQ_FAILED, &rreq->flags)) in netfs_dispatch_unbuffered_reads()
114 set_bit(NETFS_RREQ_ALL_QUEUED, &rreq->flags); in netfs_dispatch_unbuffered_reads()
115 netfs_wake_collector(rreq); in netfs_dispatch_unbuffered_reads()
125 static ssize_t netfs_unbuffered_read(struct netfs_io_request *rreq, bool sync) in netfs_unbuffered_read() argument
130 rreq->debug_id, rreq->start, rreq->start + rreq->len - 1); in netfs_unbuffered_read()
132 if (rreq->len == 0) { in netfs_unbuffered_read()
133 pr_err("Zero-sized read [R=%x]\n", rreq->debug_id); in netfs_unbuffered_read()
139 inode_dio_begin(rreq->inode); in netfs_unbuffered_read()
141 ret = netfs_dispatch_unbuffered_reads(rreq); in netfs_unbuffered_read()
143 if (!rreq->submitted) { in netfs_unbuffered_read()
144 netfs_put_request(rreq, netfs_rreq_trace_put_no_submit); in netfs_unbuffered_read()
145 inode_dio_end(rreq->inode); in netfs_unbuffered_read()
151 ret = netfs_wait_for_read(rreq); in netfs_unbuffered_read()
171 struct netfs_io_request *rreq; in netfs_unbuffered_read_iter_locked() local
186 rreq = netfs_alloc_request(iocb->ki_filp->f_mapping, iocb->ki_filp, in netfs_unbuffered_read_iter_locked()
190 if (IS_ERR(rreq)) in netfs_unbuffered_read_iter_locked()
191 return PTR_ERR(rreq); in netfs_unbuffered_read_iter_locked()
194 trace_netfs_read(rreq, rreq->start, rreq->len, netfs_read_trace_dio_read); in netfs_unbuffered_read_iter_locked()
206 ret = netfs_extract_user_iter(iter, rreq->len, &rreq->buffer.iter, 0); in netfs_unbuffered_read_iter_locked()
209 rreq->direct_bv = (struct bio_vec *)rreq->buffer.iter.bvec; in netfs_unbuffered_read_iter_locked()
210 rreq->direct_bv_count = ret; in netfs_unbuffered_read_iter_locked()
211 rreq->direct_bv_unpin = iov_iter_extract_will_pin(iter); in netfs_unbuffered_read_iter_locked()
212 rreq->len = iov_iter_count(&rreq->buffer.iter); in netfs_unbuffered_read_iter_locked()
214 rreq->buffer.iter = *iter; in netfs_unbuffered_read_iter_locked()
215 rreq->len = orig_count; in netfs_unbuffered_read_iter_locked()
216 rreq->direct_bv_unpin = false; in netfs_unbuffered_read_iter_locked()
223 rreq->iocb = iocb; in netfs_unbuffered_read_iter_locked()
224 __set_bit(NETFS_RREQ_OFFLOAD_COLLECTION, &rreq->flags); in netfs_unbuffered_read_iter_locked()
227 ret = netfs_unbuffered_read(rreq, sync); in netfs_unbuffered_read_iter_locked()
232 iocb->ki_pos += rreq->transferred; in netfs_unbuffered_read_iter_locked()
233 ret = rreq->transferred; in netfs_unbuffered_read_iter_locked()
237 netfs_put_request(rreq, netfs_rreq_trace_put_return); in netfs_unbuffered_read_iter_locked()