Lines Matching full:front

18 #define HIT_PENDING	0x01	/* A front op was still pending */
21 #define NEED_RETRY 0x10 /* A front op requests retrying */
189 struct netfs_io_subrequest *front, *remove; in netfs_collect_read_results() local
205 /* Remove completed subrequests from the front of the stream and in netfs_collect_read_results()
210 front = READ_ONCE(stream->front); in netfs_collect_read_results()
211 while (front) { in netfs_collect_read_results()
214 trace_netfs_collect_sreq(rreq, front); in netfs_collect_read_results()
216 front->debug_index, front->start, front->transferred, front->len); in netfs_collect_read_results()
218 if (stream->collected_to < front->start) { in netfs_collect_read_results()
219 trace_netfs_collect_gap(rreq, stream, front->start, 'F'); in netfs_collect_read_results()
220 stream->collected_to = front->start; in netfs_collect_read_results()
223 if (test_bit(NETFS_SREQ_IN_PROGRESS, &front->flags)) in netfs_collect_read_results()
226 transferred = READ_ONCE(front->transferred); in netfs_collect_read_results()
238 front->error == 0 && in netfs_collect_read_results()
239 transferred < front->len && in netfs_collect_read_results()
240 (test_bit(NETFS_SREQ_HIT_EOF, &front->flags) || in netfs_collect_read_results()
241 test_bit(NETFS_SREQ_CLEAR_TAIL, &front->flags))) { in netfs_collect_read_results()
242 netfs_clear_unread(front); in netfs_collect_read_results()
243 transferred = front->transferred = front->len; in netfs_collect_read_results()
244 trace_netfs_sreq(front, netfs_sreq_trace_clear); in netfs_collect_read_results()
247 stream->collected_to = front->start + transferred; in netfs_collect_read_results()
250 if (test_bit(NETFS_SREQ_COPY_TO_CACHE, &front->flags)) in netfs_collect_read_results()
253 if (test_bit(NETFS_SREQ_FAILED, &front->flags)) { in netfs_collect_read_results()
254 rreq->abandon_to = front->start + front->len; in netfs_collect_read_results()
255 front->transferred = front->len; in netfs_collect_read_results()
256 transferred = front->len; in netfs_collect_read_results()
259 if (front->start + transferred >= rreq->cleaned_to + fsize || in netfs_collect_read_results()
260 test_bit(NETFS_SREQ_HIT_EOF, &front->flags)) in netfs_collect_read_results()
263 stream->collected_to = front->start + transferred; in netfs_collect_read_results()
267 /* Stall if the front is still undergoing I/O. */ in netfs_collect_read_results()
271 if (test_bit(NETFS_SREQ_FAILED, &front->flags)) { in netfs_collect_read_results()
273 stream->error = front->error; in netfs_collect_read_results()
274 rreq->error = front->error; in netfs_collect_read_results()
279 } else if (test_bit(NETFS_SREQ_NEED_RETRY, &front->flags)) { in netfs_collect_read_results()
290 stream->source = front->source; in netfs_collect_read_results()
293 remove = front; in netfs_collect_read_results()
294 trace_netfs_sreq(front, netfs_sreq_trace_discard); in netfs_collect_read_results()
295 list_del_init(&front->rreq_link); in netfs_collect_read_results()
296 front = list_first_entry_or_null(&stream->subrequests, in netfs_collect_read_results()
298 stream->front = front; in netfs_collect_read_results()