Lines Matching refs:subreq

13 			       struct netfs_io_subrequest *subreq)  in netfs_reissue_read()  argument
15 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); in netfs_reissue_read()
16 __set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags); in netfs_reissue_read()
18 subreq->rreq->netfs_ops->issue_read(subreq); in netfs_reissue_read()
27 struct netfs_io_subrequest *subreq; in netfs_retry_read_subrequests() local
44 list_for_each_entry(subreq, &stream->subrequests, rreq_link) { in netfs_retry_read_subrequests()
45 if (test_bit(NETFS_SREQ_FAILED, &subreq->flags)) in netfs_retry_read_subrequests()
47 if (__test_and_clear_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) { in netfs_retry_read_subrequests()
48 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); in netfs_retry_read_subrequests()
49 subreq->retry_count++; in netfs_retry_read_subrequests()
50 netfs_reset_iter(subreq); in netfs_retry_read_subrequests()
51 netfs_get_subrequest(subreq, netfs_sreq_trace_get_resubmit); in netfs_retry_read_subrequests()
52 netfs_reissue_read(rreq, subreq); in netfs_retry_read_subrequests()
99 subreq = list_entry(next, struct netfs_io_subrequest, rreq_link); in netfs_retry_read_subrequests()
100 if (subreq->start + subreq->transferred != start + len || in netfs_retry_read_subrequests()
101 test_bit(NETFS_SREQ_BOUNDARY, &subreq->flags) || in netfs_retry_read_subrequests()
102 !test_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) in netfs_retry_read_subrequests()
104 to = subreq; in netfs_retry_read_subrequests()
118 subreq = from; in netfs_retry_read_subrequests()
119 list_for_each_entry_from(subreq, &stream->subrequests, rreq_link) { in netfs_retry_read_subrequests()
124 subreq->source = NETFS_DOWNLOAD_FROM_SERVER; in netfs_retry_read_subrequests()
125 subreq->start = start - subreq->transferred; in netfs_retry_read_subrequests()
126 subreq->len = len + subreq->transferred; in netfs_retry_read_subrequests()
127 __clear_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags); in netfs_retry_read_subrequests()
128 __clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags); in netfs_retry_read_subrequests()
129 subreq->retry_count++; in netfs_retry_read_subrequests()
131 trace_netfs_sreq(subreq, netfs_sreq_trace_retry); in netfs_retry_read_subrequests()
134 stream->sreq_max_len = subreq->len; in netfs_retry_read_subrequests()
136 rreq->netfs_ops->prepare_read(subreq) < 0) { in netfs_retry_read_subrequests()
137 trace_netfs_sreq(subreq, netfs_sreq_trace_reprep_failed); in netfs_retry_read_subrequests()
138 __set_bit(NETFS_SREQ_FAILED, &subreq->flags); in netfs_retry_read_subrequests()
145 subreq->len = subreq->transferred + part; in netfs_retry_read_subrequests()
146 subreq->io_iter = source; in netfs_retry_read_subrequests()
147 iov_iter_truncate(&subreq->io_iter, part); in netfs_retry_read_subrequests()
153 __set_bit(NETFS_SREQ_BOUNDARY, &subreq->flags); in netfs_retry_read_subrequests()
155 __clear_bit(NETFS_SREQ_BOUNDARY, &subreq->flags); in netfs_retry_read_subrequests()
158 netfs_get_subrequest(subreq, netfs_sreq_trace_get_resubmit); in netfs_retry_read_subrequests()
159 netfs_reissue_read(rreq, subreq); in netfs_retry_read_subrequests()
160 if (subreq == to) { in netfs_retry_read_subrequests()
172 list_for_each_entry_safe_from(subreq, tmp, in netfs_retry_read_subrequests()
174 trace_netfs_sreq(subreq, netfs_sreq_trace_superfluous); in netfs_retry_read_subrequests()
175 list_del(&subreq->rreq_link); in netfs_retry_read_subrequests()
176 netfs_put_subrequest(subreq, netfs_sreq_trace_put_done); in netfs_retry_read_subrequests()
177 if (subreq == to) in netfs_retry_read_subrequests()
187 subreq = netfs_alloc_subrequest(rreq); in netfs_retry_read_subrequests()
188 if (!subreq) { in netfs_retry_read_subrequests()
189 subreq = to; in netfs_retry_read_subrequests()
192 subreq->source = NETFS_DOWNLOAD_FROM_SERVER; in netfs_retry_read_subrequests()
193 subreq->start = start; in netfs_retry_read_subrequests()
194 subreq->len = len; in netfs_retry_read_subrequests()
195 subreq->stream_nr = stream->stream_nr; in netfs_retry_read_subrequests()
196 subreq->retry_count = 1; in netfs_retry_read_subrequests()
198 trace_netfs_sreq_ref(rreq->debug_id, subreq->debug_index, in netfs_retry_read_subrequests()
199 refcount_read(&subreq->ref), in netfs_retry_read_subrequests()
202 list_add(&subreq->rreq_link, &to->rreq_link); in netfs_retry_read_subrequests()
204 trace_netfs_sreq(subreq, netfs_sreq_trace_retry); in netfs_retry_read_subrequests()
212 if (rreq->netfs_ops->prepare_read(subreq) < 0) { in netfs_retry_read_subrequests()
213 trace_netfs_sreq(subreq, netfs_sreq_trace_reprep_failed); in netfs_retry_read_subrequests()
214 __set_bit(NETFS_SREQ_FAILED, &subreq->flags); in netfs_retry_read_subrequests()
219 subreq->len = subreq->transferred + part; in netfs_retry_read_subrequests()
220 subreq->io_iter = source; in netfs_retry_read_subrequests()
221 iov_iter_truncate(&subreq->io_iter, part); in netfs_retry_read_subrequests()
231 netfs_reissue_read(rreq, subreq); in netfs_retry_read_subrequests()
240 if (list_is_last(&subreq->rreq_link, &stream->subrequests)) in netfs_retry_read_subrequests()
242 subreq = list_next_entry(subreq, rreq_link); in netfs_retry_read_subrequests()
244 list_for_each_entry_from(subreq, &stream->subrequests, rreq_link) { in netfs_retry_read_subrequests()
245 if (!subreq->error && in netfs_retry_read_subrequests()
246 !test_bit(NETFS_SREQ_FAILED, &subreq->flags) && in netfs_retry_read_subrequests()
247 !test_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags)) in netfs_retry_read_subrequests()
249 subreq->error = -ENOMEM; in netfs_retry_read_subrequests()
250 __set_bit(NETFS_SREQ_FAILED, &subreq->flags); in netfs_retry_read_subrequests()
251 __clear_bit(NETFS_SREQ_NEED_RETRY, &subreq->flags); in netfs_retry_read_subrequests()