Lines Matching defs:creq
19 static void netfs_pgpriv2_copy_folio(struct netfs_io_request *creq, struct folio *folio)
21 struct netfs_io_stream *cache = &creq->io_streams[1];
32 i_size = i_size_read(creq->inode);
41 if (fpos + fsize > creq->i_size)
42 creq->i_size = i_size;
56 if (rolling_buffer_append(&creq->buffer, folio, 0) < 0) {
57 clear_bit(NETFS_RREQ_FOLIO_COPY_TO_CACHE, &creq->flags);
73 creq->buffer.iter.iov_offset = cache->submit_off;
75 atomic64_set(&creq->issued_to, fpos + cache->submit_off);
77 part = netfs_advance_write(creq, cache, fpos + cache->submit_off,
86 creq->buffer.iter.iov_offset = 0;
87 rolling_buffer_advance(&creq->buffer, fsize);
88 atomic64_set(&creq->issued_to, fpos + fsize);
91 netfs_issue_write(creq, cache);
100 struct netfs_io_request *creq;
105 creq = netfs_create_write_req(rreq->mapping, NULL, folio_pos(folio),
107 if (IS_ERR(creq))
110 if (!creq->io_streams[1].avail)
113 __set_bit(NETFS_RREQ_OFFLOAD_COLLECTION, &creq->flags);
114 trace_netfs_copy2cache(rreq, creq);
115 trace_netfs_write(creq, netfs_write_trace_copy_to_cache);
117 rreq->copy_to_cache = creq;
118 return creq;
121 netfs_put_request(creq, netfs_rreq_trace_put_return);
134 struct netfs_io_request *creq = rreq->copy_to_cache;
136 if (!creq)
137 creq = netfs_pgpriv2_begin_copy_to_cache(rreq, folio);
138 if (IS_ERR(creq))
143 netfs_pgpriv2_copy_folio(creq, folio);
151 struct netfs_io_request *creq = rreq->copy_to_cache;
153 if (IS_ERR_OR_NULL(creq))
156 netfs_issue_write(creq, &creq->io_streams[1]);
158 set_bit(NETFS_RREQ_ALL_QUEUED, &creq->flags);
160 if (list_empty_careful(&creq->io_streams[1].subrequests))
161 netfs_wake_collector(creq);
163 netfs_put_request(creq, netfs_rreq_trace_put_return);
164 creq->copy_to_cache = NULL;
171 bool netfs_pgpriv2_unlock_copied_folios(struct netfs_io_request *creq)
173 struct folio_queue *folioq = creq->buffer.tail;
174 unsigned long long collected_to = creq->collected_to;
175 unsigned int slot = creq->buffer.first_tail_slot;
179 folioq = rolling_buffer_delete_spent(&creq->buffer);
191 creq->debug_id, folio->index))
198 fend = min_t(unsigned long long, fpos + flen, creq->i_size);
200 trace_netfs_collect_folio(creq, folio, fend, collected_to);
208 creq->cleaned_to = fpos + fsize;
218 folioq = rolling_buffer_delete_spent(&creq->buffer);
228 creq->buffer.tail = folioq;
230 creq->buffer.first_tail_slot = slot;