Lines Matching refs:subreq
81 static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq, in netfs_prepare_read_iterator() argument
84 struct netfs_io_request *rreq = subreq->rreq; in netfs_prepare_read_iterator()
85 size_t rsize = subreq->len; in netfs_prepare_read_iterator()
87 if (subreq->source == NETFS_DOWNLOAD_FROM_SERVER) in netfs_prepare_read_iterator()
100 while (rreq->submitted < subreq->start + rsize) { in netfs_prepare_read_iterator()
112 subreq->len = rsize; in netfs_prepare_read_iterator()
118 subreq->len = limit; in netfs_prepare_read_iterator()
119 trace_netfs_sreq(subreq, netfs_sreq_trace_limited); in netfs_prepare_read_iterator()
123 subreq->io_iter = rreq->buffer.iter; in netfs_prepare_read_iterator()
125 iov_iter_truncate(&subreq->io_iter, subreq->len); in netfs_prepare_read_iterator()
126 rolling_buffer_advance(&rreq->buffer, subreq->len); in netfs_prepare_read_iterator()
127 return subreq->len; in netfs_prepare_read_iterator()
131 struct netfs_io_subrequest *subreq, in netfs_cache_prepare_read() argument
139 source = cres->ops->prepare_read(subreq, i_size); in netfs_cache_prepare_read()
140 trace_netfs_sreq(subreq, netfs_sreq_trace_prepare); in netfs_cache_prepare_read()
150 struct netfs_io_subrequest *subreq) in netfs_read_cache_to_pagecache() argument
155 cres->ops->read(cres, subreq->start, &subreq->io_iter, NETFS_READ_HOLE_IGNORE, in netfs_read_cache_to_pagecache()
156 netfs_cache_read_terminated, subreq); in netfs_read_cache_to_pagecache()
160 struct netfs_io_subrequest *subreq, in netfs_queue_read() argument
165 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); in netfs_queue_read()
172 list_add_tail(&subreq->rreq_link, &stream->subrequests); in netfs_queue_read()
173 if (list_is_first(&subreq->rreq_link, &stream->subrequests)) { in netfs_queue_read()
174 stream->front = subreq; in netfs_queue_read()
191 struct netfs_io_subrequest *subreq) in netfs_issue_read() argument
193 switch (subreq->source) { in netfs_issue_read()
195 rreq->netfs_ops->issue_read(subreq); in netfs_issue_read()
198 netfs_read_cache_to_pagecache(rreq, subreq); in netfs_issue_read()
201 __set_bit(NETFS_SREQ_CLEAR_TAIL, &subreq->flags); in netfs_issue_read()
202 subreq->error = 0; in netfs_issue_read()
203 iov_iter_zero(subreq->len, &subreq->io_iter); in netfs_issue_read()
204 subreq->transferred = subreq->len; in netfs_issue_read()
205 netfs_read_subreq_terminated(subreq); in netfs_issue_read()
224 struct netfs_io_subrequest *subreq; in netfs_read_to_pagecache() local
228 subreq = netfs_alloc_subrequest(rreq); in netfs_read_to_pagecache()
229 if (!subreq) { in netfs_read_to_pagecache()
234 subreq->start = start; in netfs_read_to_pagecache()
235 subreq->len = size; in netfs_read_to_pagecache()
237 source = netfs_cache_prepare_read(rreq, subreq, rreq->i_size); in netfs_read_to_pagecache()
238 subreq->source = source; in netfs_read_to_pagecache()
241 size_t len = subreq->len; in netfs_read_to_pagecache()
245 if (subreq->start >= zp) { in netfs_read_to_pagecache()
246 subreq->source = source = NETFS_FILL_WITH_ZEROES; in netfs_read_to_pagecache()
250 if (len > zp - subreq->start) in netfs_read_to_pagecache()
251 len = zp - subreq->start; in netfs_read_to_pagecache()
254 rreq->debug_id, subreq->debug_index, in netfs_read_to_pagecache()
255 subreq->len, size, in netfs_read_to_pagecache()
256 subreq->start, ictx->zero_point, rreq->i_size); in netfs_read_to_pagecache()
259 subreq->len = len; in netfs_read_to_pagecache()
263 ret = rreq->netfs_ops->prepare_read(subreq); in netfs_read_to_pagecache()
265 subreq->error = ret; in netfs_read_to_pagecache()
267 netfs_put_subrequest(subreq, in netfs_read_to_pagecache()
269 netfs_put_subrequest(subreq, in netfs_read_to_pagecache()
273 trace_netfs_sreq(subreq, netfs_sreq_trace_prepare); in netfs_read_to_pagecache()
280 subreq->source = NETFS_FILL_WITH_ZEROES; in netfs_read_to_pagecache()
281 trace_netfs_sreq(subreq, netfs_sreq_trace_submit); in netfs_read_to_pagecache()
287 trace_netfs_sreq(subreq, netfs_sreq_trace_submit); in netfs_read_to_pagecache()
296 slice = netfs_prepare_read_iterator(subreq, ractl); in netfs_read_to_pagecache()
299 subreq->error = ret; in netfs_read_to_pagecache()
300 trace_netfs_sreq(subreq, netfs_sreq_trace_cancel); in netfs_read_to_pagecache()
302 netfs_put_subrequest(subreq, netfs_sreq_trace_put_cancel); in netfs_read_to_pagecache()
303 netfs_put_subrequest(subreq, netfs_sreq_trace_put_cancel); in netfs_read_to_pagecache()
309 netfs_queue_read(rreq, subreq, size <= 0); in netfs_read_to_pagecache()
310 netfs_issue_read(rreq, subreq); in netfs_read_to_pagecache()