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()
75 if (!list_is_last(&subreq->rreq_link, &rreq->subrequests)) { in netfs_rreq_unlock_folios()
92 if (!test_bit(NETFS_RREQ_DONT_UNLOCK_FOLIOS, &rreq->flags)) { in netfs_rreq_unlock_folios()
93 if (folio_index(folio) == rreq->no_unlock_folio && in netfs_rreq_unlock_folios()
94 test_bit(NETFS_RREQ_NO_UNLOCK_FOLIO, &rreq->flags)) in netfs_rreq_unlock_folios()
103 if (rreq->netfs_ops->done) in netfs_rreq_unlock_folios()
104 rreq->netfs_ops->done(rreq); in netfs_rreq_unlock_folios()
107 static void netfs_cache_expand_readahead(struct netfs_io_request *rreq, in netfs_cache_expand_readahead() argument
110 struct netfs_cache_resources *cres = &rreq->cache_resources; in netfs_cache_expand_readahead()
116 static void netfs_rreq_expand(struct netfs_io_request *rreq, in netfs_rreq_expand() argument
122 netfs_cache_expand_readahead(rreq, &rreq->start, &rreq->len, rreq->i_size); in netfs_rreq_expand()
127 if (rreq->netfs_ops->expand_readahead) in netfs_rreq_expand()
128 rreq->netfs_ops->expand_readahead(rreq); in netfs_rreq_expand()
139 if (rreq->start != readahead_pos(ractl) || in netfs_rreq_expand()
140 rreq->len != readahead_length(ractl)) { in netfs_rreq_expand()
141 readahead_expand(ractl, rreq->start, rreq->len); in netfs_rreq_expand()
142 rreq->start = readahead_pos(ractl); in netfs_rreq_expand()
143 rreq->len = readahead_length(ractl); in netfs_rreq_expand()
145 trace_netfs_read(rreq, readahead_pos(ractl), readahead_length(ractl), in netfs_rreq_expand()
167 struct netfs_io_request *rreq; in netfs_readahead() local
176 rreq = netfs_alloc_request(ractl->mapping, ractl->file, in netfs_readahead()
180 if (IS_ERR(rreq)) in netfs_readahead()
184 ret = ctx->ops->begin_cache_operation(rreq); in netfs_readahead()
190 trace_netfs_read(rreq, readahead_pos(ractl), readahead_length(ractl), in netfs_readahead()
193 netfs_rreq_expand(rreq, ractl); in netfs_readahead()
201 netfs_begin_read(rreq, false); in netfs_readahead()
205 netfs_put_request(rreq, false, netfs_rreq_trace_put_failed); in netfs_readahead()
227 struct netfs_io_request *rreq; in netfs_read_folio() local
233 rreq = netfs_alloc_request(mapping, file, in netfs_read_folio()
236 if (IS_ERR(rreq)) { in netfs_read_folio()
237 ret = PTR_ERR(rreq); in netfs_read_folio()
242 ret = ctx->ops->begin_cache_operation(rreq); in netfs_read_folio()
248 trace_netfs_read(rreq, rreq->start, rreq->len, netfs_read_trace_readpage); in netfs_read_folio()
249 return netfs_begin_read(rreq, true); in netfs_read_folio()
252 netfs_put_request(rreq, false, netfs_rreq_trace_put_discard); in netfs_read_folio()
346 struct netfs_io_request *rreq; in netfs_write_begin() local
383 rreq = netfs_alloc_request(mapping, file, in netfs_write_begin()
386 if (IS_ERR(rreq)) { in netfs_write_begin()
387 ret = PTR_ERR(rreq); in netfs_write_begin()
390 rreq->no_unlock_folio = folio_index(folio); in netfs_write_begin()
391 __set_bit(NETFS_RREQ_NO_UNLOCK_FOLIO, &rreq->flags); in netfs_write_begin()
394 ret = ctx->ops->begin_cache_operation(rreq); in netfs_write_begin()
400 trace_netfs_read(rreq, pos, len, netfs_read_trace_write_begin); in netfs_write_begin()
406 netfs_rreq_expand(rreq, &ractl); in netfs_write_begin()
413 ret = netfs_begin_read(rreq, true); in netfs_write_begin()
427 netfs_put_request(rreq, false, netfs_rreq_trace_put_failed); in netfs_write_begin()