Lines Matching refs:subreq

112 static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq)  in netfs_prepare_read_iterator()  argument
114 struct netfs_io_request *rreq = subreq->rreq; in netfs_prepare_read_iterator()
115 size_t rsize = subreq->len; in netfs_prepare_read_iterator()
117 if (subreq->source == NETFS_DOWNLOAD_FROM_SERVER) in netfs_prepare_read_iterator()
130 while (rreq->submitted < subreq->start + rsize) { in netfs_prepare_read_iterator()
149 subreq->len = rsize; in netfs_prepare_read_iterator()
155 subreq->len = limit; in netfs_prepare_read_iterator()
156 trace_netfs_sreq(subreq, netfs_sreq_trace_limited); in netfs_prepare_read_iterator()
160 subreq->io_iter = rreq->iter; in netfs_prepare_read_iterator()
162 if (iov_iter_is_folioq(&subreq->io_iter)) { in netfs_prepare_read_iterator()
163 if (subreq->io_iter.folioq_slot >= folioq_nr_slots(subreq->io_iter.folioq)) { in netfs_prepare_read_iterator()
164 subreq->io_iter.folioq = subreq->io_iter.folioq->next; in netfs_prepare_read_iterator()
165 subreq->io_iter.folioq_slot = 0; in netfs_prepare_read_iterator()
167 subreq->curr_folioq = (struct folio_queue *)subreq->io_iter.folioq; in netfs_prepare_read_iterator()
168 subreq->curr_folioq_slot = subreq->io_iter.folioq_slot; in netfs_prepare_read_iterator()
169 subreq->curr_folio_order = subreq->curr_folioq->orders[subreq->curr_folioq_slot]; in netfs_prepare_read_iterator()
172 iov_iter_truncate(&subreq->io_iter, subreq->len); in netfs_prepare_read_iterator()
173 iov_iter_advance(&rreq->iter, subreq->len); in netfs_prepare_read_iterator()
174 return subreq->len; in netfs_prepare_read_iterator()
178 struct netfs_io_subrequest *subreq, in netfs_cache_prepare_read() argument
185 return cres->ops->prepare_read(subreq, i_size); in netfs_cache_prepare_read()
191 struct netfs_io_subrequest *subreq = priv; in netfs_cache_read_terminated() local
194 netfs_read_subreq_terminated(subreq, transferred_or_error, was_async); in netfs_cache_read_terminated()
199 subreq->transferred += transferred_or_error; in netfs_cache_read_terminated()
200 netfs_read_subreq_terminated(subreq, 0, was_async); in netfs_cache_read_terminated()
208 struct netfs_io_subrequest *subreq) in netfs_read_cache_to_pagecache() argument
213 cres->ops->read(cres, subreq->start, &subreq->io_iter, NETFS_READ_HOLE_IGNORE, in netfs_read_cache_to_pagecache()
214 netfs_cache_read_terminated, subreq); in netfs_read_cache_to_pagecache()
232 struct netfs_io_subrequest *subreq; in netfs_read_to_pagecache() local
236 subreq = netfs_alloc_subrequest(rreq); in netfs_read_to_pagecache()
237 if (!subreq) { in netfs_read_to_pagecache()
242 subreq->start = start; in netfs_read_to_pagecache()
243 subreq->len = size; in netfs_read_to_pagecache()
247 list_add_tail(&subreq->rreq_link, &rreq->subrequests); in netfs_read_to_pagecache()
248 subreq->prev_donated = rreq->prev_donated; in netfs_read_to_pagecache()
250 trace_netfs_sreq(subreq, netfs_sreq_trace_added); in netfs_read_to_pagecache()
253 source = netfs_cache_prepare_read(rreq, subreq, rreq->i_size); in netfs_read_to_pagecache()
254 subreq->source = source; in netfs_read_to_pagecache()
257 size_t len = subreq->len; in netfs_read_to_pagecache()
259 if (subreq->start >= zp) { in netfs_read_to_pagecache()
260 subreq->source = source = NETFS_FILL_WITH_ZEROES; in netfs_read_to_pagecache()
264 if (len > zp - subreq->start) in netfs_read_to_pagecache()
265 len = zp - subreq->start; in netfs_read_to_pagecache()
268 rreq->debug_id, subreq->debug_index, in netfs_read_to_pagecache()
269 subreq->len, size, in netfs_read_to_pagecache()
270 subreq->start, ictx->zero_point, rreq->i_size); in netfs_read_to_pagecache()
273 subreq->len = len; in netfs_read_to_pagecache()
277 ret = rreq->netfs_ops->prepare_read(subreq); in netfs_read_to_pagecache()
280 netfs_put_subrequest(subreq, false, in netfs_read_to_pagecache()
284 trace_netfs_sreq(subreq, netfs_sreq_trace_prepare); in netfs_read_to_pagecache()
287 slice = netfs_prepare_read_iterator(subreq); in netfs_read_to_pagecache()
290 netfs_put_subrequest(subreq, false, netfs_sreq_trace_put_cancel); in netfs_read_to_pagecache()
295 rreq->netfs_ops->issue_read(subreq); in netfs_read_to_pagecache()
301 subreq->source = NETFS_FILL_WITH_ZEROES; in netfs_read_to_pagecache()
302 trace_netfs_sreq(subreq, netfs_sreq_trace_submit); in netfs_read_to_pagecache()
304 slice = netfs_prepare_read_iterator(subreq); in netfs_read_to_pagecache()
305 __set_bit(NETFS_SREQ_CLEAR_TAIL, &subreq->flags); in netfs_read_to_pagecache()
306 netfs_read_subreq_terminated(subreq, 0, false); in netfs_read_to_pagecache()
311 trace_netfs_sreq(subreq, netfs_sreq_trace_submit); in netfs_read_to_pagecache()
312 slice = netfs_prepare_read_iterator(subreq); in netfs_read_to_pagecache()
313 netfs_read_cache_to_pagecache(rreq, subreq); in netfs_read_to_pagecache()