Lines Matching refs:subreq
147 void netfs_prepare_write_failed(struct netfs_io_subrequest *subreq) in netfs_prepare_write_failed() argument
149 __set_bit(NETFS_SREQ_FAILED, &subreq->flags); in netfs_prepare_write_failed()
150 trace_netfs_sreq(subreq, netfs_sreq_trace_prep_failed); in netfs_prepare_write_failed()
162 struct netfs_io_subrequest *subreq; in netfs_prepare_write() local
173 subreq = netfs_alloc_subrequest(wreq); in netfs_prepare_write()
174 subreq->source = stream->source; in netfs_prepare_write()
175 subreq->start = start; in netfs_prepare_write()
176 subreq->stream_nr = stream->stream_nr; in netfs_prepare_write()
177 subreq->io_iter = *wreq_iter; in netfs_prepare_write()
179 _enter("R=%x[%x]", wreq->debug_id, subreq->debug_index); in netfs_prepare_write()
181 trace_netfs_sreq(subreq, netfs_sreq_trace_prepare); in netfs_prepare_write()
199 stream->prepare_write(subreq); in netfs_prepare_write()
201 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); in netfs_prepare_write()
208 list_add_tail(&subreq->rreq_link, &stream->subrequests); in netfs_prepare_write()
209 if (list_is_first(&subreq->rreq_link, &stream->subrequests)) { in netfs_prepare_write()
210 stream->front = subreq; in netfs_prepare_write()
220 stream->construct = subreq; in netfs_prepare_write()
229 struct netfs_io_subrequest *subreq) in netfs_do_issue_write() argument
231 struct netfs_io_request *wreq = subreq->rreq; in netfs_do_issue_write()
233 _enter("R=%x[%x],%zx", wreq->debug_id, subreq->debug_index, subreq->len); in netfs_do_issue_write()
235 if (test_bit(NETFS_SREQ_FAILED, &subreq->flags)) in netfs_do_issue_write()
236 return netfs_write_subrequest_terminated(subreq, subreq->error); in netfs_do_issue_write()
238 trace_netfs_sreq(subreq, netfs_sreq_trace_submit); in netfs_do_issue_write()
239 stream->issue_write(subreq); in netfs_do_issue_write()
243 struct netfs_io_subrequest *subreq, in netfs_reissue_write() argument
246 size_t size = subreq->len - subreq->transferred; in netfs_reissue_write()
249 subreq->io_iter = *source; in netfs_reissue_write()
251 iov_iter_truncate(&subreq->io_iter, size); in netfs_reissue_write()
253 subreq->retry_count++; in netfs_reissue_write()
254 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); in netfs_reissue_write()
255 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); in netfs_reissue_write()
257 netfs_do_issue_write(stream, subreq); in netfs_reissue_write()
263 struct netfs_io_subrequest *subreq = stream->construct; in netfs_issue_write() local
265 if (!subreq) in netfs_issue_write()
268 subreq->io_iter.count = subreq->len; in netfs_issue_write()
269 netfs_do_issue_write(stream, subreq); in netfs_issue_write()
282 struct netfs_io_subrequest *subreq = stream->construct; in netfs_advance_write() local
290 _enter("R=%x[%x]", wreq->debug_id, subreq ? subreq->debug_index : 0); in netfs_advance_write()
292 if (subreq && start != subreq->start + subreq->len) { in netfs_advance_write()
294 subreq = NULL; in netfs_advance_write()
299 subreq = stream->construct; in netfs_advance_write()
301 part = umin(stream->sreq_max_len - subreq->len, len); in netfs_advance_write()
302 _debug("part %zx/%zx %zx/%zx", subreq->len, stream->sreq_max_len, part, len); in netfs_advance_write()
303 subreq->len += part; in netfs_advance_write()
304 subreq->nr_segs++; in netfs_advance_write()
307 if (subreq->len >= stream->sreq_max_len || in netfs_advance_write()
308 subreq->nr_segs >= stream->sreq_max_segs || in netfs_advance_write()
311 subreq = NULL; in netfs_advance_write()