Lines Matching refs:rreq

16 void netfs_rreq_unlock_folios(struct netfs_io_request *rreq)  in netfs_rreq_unlock_folios()  argument
20 pgoff_t start_page = rreq->start / PAGE_SIZE; in netfs_rreq_unlock_folios()
21 pgoff_t last_page = ((rreq->start + rreq->len) / PAGE_SIZE) - 1; in netfs_rreq_unlock_folios()
25 XA_STATE(xas, &rreq->mapping->i_pages, start_page); in netfs_rreq_unlock_folios()
27 if (test_bit(NETFS_RREQ_FAILED, &rreq->flags)) { in netfs_rreq_unlock_folios()
28 __clear_bit(NETFS_RREQ_COPY_TO_CACHE, &rreq->flags); in netfs_rreq_unlock_folios()
29 list_for_each_entry(subreq, &rreq->subrequests, rreq_link) { in netfs_rreq_unlock_folios()
40 subreq = list_first_entry(&rreq->subrequests, in netfs_rreq_unlock_folios()
44 trace_netfs_rreq(rreq, netfs_rreq_trace_unlock); in netfs_rreq_unlock_folios()
71 if (!list_is_last(&subreq->rreq_link, &rreq->subrequests)) { in netfs_rreq_unlock_folios()
88 if (!test_bit(NETFS_RREQ_DONT_UNLOCK_FOLIOS, &rreq->flags)) { in netfs_rreq_unlock_folios()
89 if (folio_index(folio) == rreq->no_unlock_folio && in netfs_rreq_unlock_folios()
90 test_bit(NETFS_RREQ_NO_UNLOCK_FOLIO, &rreq->flags)) in netfs_rreq_unlock_folios()
99 if (rreq->netfs_ops->done) in netfs_rreq_unlock_folios()
100 rreq->netfs_ops->done(rreq); in netfs_rreq_unlock_folios()
103 static void netfs_cache_expand_readahead(struct netfs_io_request *rreq, in netfs_cache_expand_readahead() argument
106 struct netfs_cache_resources *cres = &rreq->cache_resources; in netfs_cache_expand_readahead()
112 static void netfs_rreq_expand(struct netfs_io_request *rreq, in netfs_rreq_expand() argument
118 netfs_cache_expand_readahead(rreq, &rreq->start, &rreq->len, rreq->i_size); in netfs_rreq_expand()
123 if (rreq->netfs_ops->expand_readahead) in netfs_rreq_expand()
124 rreq->netfs_ops->expand_readahead(rreq); in netfs_rreq_expand()
135 if (rreq->start != readahead_pos(ractl) || in netfs_rreq_expand()
136 rreq->len != readahead_length(ractl)) { in netfs_rreq_expand()
137 readahead_expand(ractl, rreq->start, rreq->len); in netfs_rreq_expand()
138 rreq->start = readahead_pos(ractl); in netfs_rreq_expand()
139 rreq->len = readahead_length(ractl); in netfs_rreq_expand()
141 trace_netfs_read(rreq, readahead_pos(ractl), readahead_length(ractl), in netfs_rreq_expand()
163 struct netfs_io_request *rreq; in netfs_readahead() local
172 rreq = netfs_alloc_request(ractl->mapping, ractl->file, in netfs_readahead()
176 if (IS_ERR(rreq)) in netfs_readahead()
180 ret = ctx->ops->begin_cache_operation(rreq); in netfs_readahead()
186 trace_netfs_read(rreq, readahead_pos(ractl), readahead_length(ractl), in netfs_readahead()
189 netfs_rreq_expand(rreq, ractl); in netfs_readahead()
197 netfs_begin_read(rreq, false); in netfs_readahead()
201 netfs_put_request(rreq, false, netfs_rreq_trace_put_failed); in netfs_readahead()
223 struct netfs_io_request *rreq; in netfs_read_folio() local
229 rreq = netfs_alloc_request(mapping, file, in netfs_read_folio()
232 if (IS_ERR(rreq)) { in netfs_read_folio()
233 ret = PTR_ERR(rreq); in netfs_read_folio()
238 ret = ctx->ops->begin_cache_operation(rreq); in netfs_read_folio()
244 trace_netfs_read(rreq, rreq->start, rreq->len, netfs_read_trace_readpage); in netfs_read_folio()
245 return netfs_begin_read(rreq, true); in netfs_read_folio()
248 netfs_put_request(rreq, false, netfs_rreq_trace_put_discard); in netfs_read_folio()
342 struct netfs_io_request *rreq; in netfs_write_begin() local
380 rreq = netfs_alloc_request(mapping, file, in netfs_write_begin()
383 if (IS_ERR(rreq)) { in netfs_write_begin()
384 ret = PTR_ERR(rreq); in netfs_write_begin()
387 rreq->no_unlock_folio = folio_index(folio); in netfs_write_begin()
388 __set_bit(NETFS_RREQ_NO_UNLOCK_FOLIO, &rreq->flags); in netfs_write_begin()
391 ret = ctx->ops->begin_cache_operation(rreq); in netfs_write_begin()
397 trace_netfs_read(rreq, pos, len, netfs_read_trace_write_begin); in netfs_write_begin()
403 netfs_rreq_expand(rreq, &ractl); in netfs_write_begin()
410 ret = netfs_begin_read(rreq, true); in netfs_write_begin()
424 netfs_put_request(rreq, false, netfs_rreq_trace_put_failed); in netfs_write_begin()