Lines Matching refs:flush
13 * indicates a simple flush request. If there is data, REQ_PREFLUSH indicates
28 * The actual execution of flush is double buffered. Whenever a request
31 * REQ_OP_FLUSH is issued and the pending_idx is toggled. When the flush
37 * flush.
39 * C1. At any given time, only one flush shall be in progress. This makes
89 * If flush has been pending longer than the following timeout,
117 return 1 << ffz(rq->flush.seq);
123 * After flush data completion, @rq->bio is %NULL but we need to
131 rq->end_io = rq->flush.saved_end_io;
151 * blk_flush_complete_seq - complete flush sequence
153 * @fq: flush queue
157 * @rq just completed @seq part of its flush sequence, record the
171 BUG_ON(rq->flush.seq & seq);
172 rq->flush.seq |= seq;
183 /* queue for flush */
186 list_move_tail(&rq->flush.list, pending);
190 list_move_tail(&rq->flush.list, &fq->flush_data_in_flight);
197 * flush sequencing and may already have gone through the
198 * flush data request completion path. Restore @rq for
202 list_del_init(&rq->flush.list);
253 /* account completion of the flush request */
257 list_for_each_entry_safe(rq, n, running, flush.list) {
273 * blk_kick_flush - consider issuing flush request
275 * @fq: flush queue
278 * Flush related states of @q have changed, consider issuing flush request.
290 list_first_entry(pending, struct request, flush.list);
304 * Issue flush and toggle pending_idx. This makes pending_idx
305 * different from running_idx, which means flush is in flight.
314 * the tag's ownership for flush req.
316 * In case of IO scheduler, flush rq need to borrow scheduler tag
327 * this flush request as INFLIGHT for avoiding double
407 * An empty flush handed down from a stacking driver may
420 * If there's data but flush is not necessary, the request can be
421 * processed directly without going through flush machinery. Queue
431 * @rq should go through flush machinery. Mark it part of flush
434 memset(&rq->flush, 0, sizeof(rq->flush));
435 INIT_LIST_HEAD(&rq->flush.list);
437 rq->flush.saved_end_io = rq->end_io; /* Usually NULL */
447 * blkdev_issue_flush - queue a flush
448 * @bdev: blockdev to issue flush for
452 * Issue a flush for the block device in question.
500 /* bio based request queue hasn't flush queue */