Lines Matching refs:creq
19 static void netfs_pgpriv2_copy_folio(struct netfs_io_request *creq, struct folio *folio) in netfs_pgpriv2_copy_folio() argument
21 struct netfs_io_stream *cache = &creq->io_streams[1]; in netfs_pgpriv2_copy_folio()
32 i_size = i_size_read(creq->inode); in netfs_pgpriv2_copy_folio()
41 if (fpos + fsize > creq->i_size) in netfs_pgpriv2_copy_folio()
42 creq->i_size = i_size; in netfs_pgpriv2_copy_folio()
56 if (rolling_buffer_append(&creq->buffer, folio, 0) < 0) { in netfs_pgpriv2_copy_folio()
57 clear_bit(NETFS_RREQ_FOLIO_COPY_TO_CACHE, &creq->flags); in netfs_pgpriv2_copy_folio()
73 creq->buffer.iter.iov_offset = cache->submit_off; in netfs_pgpriv2_copy_folio()
75 atomic64_set(&creq->issued_to, fpos + cache->submit_off); in netfs_pgpriv2_copy_folio()
77 part = netfs_advance_write(creq, cache, fpos + cache->submit_off, in netfs_pgpriv2_copy_folio()
86 creq->buffer.iter.iov_offset = 0; in netfs_pgpriv2_copy_folio()
87 rolling_buffer_advance(&creq->buffer, fsize); in netfs_pgpriv2_copy_folio()
88 atomic64_set(&creq->issued_to, fpos + fsize); in netfs_pgpriv2_copy_folio()
91 netfs_issue_write(creq, cache); in netfs_pgpriv2_copy_folio()
100 struct netfs_io_request *creq; in netfs_pgpriv2_begin_copy_to_cache() local
105 creq = netfs_create_write_req(rreq->mapping, NULL, folio_pos(folio), in netfs_pgpriv2_begin_copy_to_cache()
107 if (IS_ERR(creq)) in netfs_pgpriv2_begin_copy_to_cache()
110 if (!creq->io_streams[1].avail) in netfs_pgpriv2_begin_copy_to_cache()
113 trace_netfs_write(creq, netfs_write_trace_copy_to_cache); in netfs_pgpriv2_begin_copy_to_cache()
115 rreq->copy_to_cache = creq; in netfs_pgpriv2_begin_copy_to_cache()
116 return creq; in netfs_pgpriv2_begin_copy_to_cache()
119 netfs_put_request(creq, false, netfs_rreq_trace_put_return); in netfs_pgpriv2_begin_copy_to_cache()
132 struct netfs_io_request *creq = rreq->copy_to_cache; in netfs_pgpriv2_copy_to_cache() local
134 if (!creq) in netfs_pgpriv2_copy_to_cache()
135 creq = netfs_pgpriv2_begin_copy_to_cache(rreq, folio); in netfs_pgpriv2_copy_to_cache()
136 if (IS_ERR(creq)) in netfs_pgpriv2_copy_to_cache()
141 netfs_pgpriv2_copy_folio(creq, folio); in netfs_pgpriv2_copy_to_cache()
149 struct netfs_io_request *creq = rreq->copy_to_cache; in netfs_pgpriv2_end_copy_to_cache() local
151 if (IS_ERR_OR_NULL(creq)) in netfs_pgpriv2_end_copy_to_cache()
154 netfs_issue_write(creq, &creq->io_streams[1]); in netfs_pgpriv2_end_copy_to_cache()
156 set_bit(NETFS_RREQ_ALL_QUEUED, &creq->flags); in netfs_pgpriv2_end_copy_to_cache()
158 netfs_put_request(creq, false, netfs_rreq_trace_put_return); in netfs_pgpriv2_end_copy_to_cache()
159 creq->copy_to_cache = NULL; in netfs_pgpriv2_end_copy_to_cache()
166 bool netfs_pgpriv2_unlock_copied_folios(struct netfs_io_request *creq) in netfs_pgpriv2_unlock_copied_folios() argument
168 struct folio_queue *folioq = creq->buffer.tail; in netfs_pgpriv2_unlock_copied_folios()
169 unsigned long long collected_to = creq->collected_to; in netfs_pgpriv2_unlock_copied_folios()
170 unsigned int slot = creq->buffer.first_tail_slot; in netfs_pgpriv2_unlock_copied_folios()
174 folioq = rolling_buffer_delete_spent(&creq->buffer); in netfs_pgpriv2_unlock_copied_folios()
186 creq->debug_id, folio->index)) in netfs_pgpriv2_unlock_copied_folios()
193 fend = min_t(unsigned long long, fpos + flen, creq->i_size); in netfs_pgpriv2_unlock_copied_folios()
195 trace_netfs_collect_folio(creq, folio, fend, collected_to); in netfs_pgpriv2_unlock_copied_folios()
203 creq->cleaned_to = fpos + fsize; in netfs_pgpriv2_unlock_copied_folios()
213 folioq = rolling_buffer_delete_spent(&creq->buffer); in netfs_pgpriv2_unlock_copied_folios()
223 creq->buffer.tail = folioq; in netfs_pgpriv2_unlock_copied_folios()
225 creq->buffer.first_tail_slot = slot; in netfs_pgpriv2_unlock_copied_folios()