Lines Matching defs:fq

30  * fq->flush_queue[fq->flush_pending_idx].  Once certain criteria are met, a
96 struct blk_flush_queue *fq, unsigned int flags);
153 * @fq: flush queue
161 * spin_lock_irq(fq->mq_flush_lock)
164 struct blk_flush_queue *fq,
168 struct list_head *pending = &fq->flush_queue[fq->flush_pending_idx];
185 fq->flush_pending_since = jiffies;
190 list_move_tail(&rq->flush.list, &fq->flush_data_in_flight);
211 blk_kick_flush(q, fq, cmd_flags);
220 struct blk_flush_queue *fq = blk_get_flush_queue(q, flush_rq->mq_ctx);
223 spin_lock_irqsave(&fq->mq_flush_lock, flags);
226 fq->rq_status = error;
227 spin_unlock_irqrestore(&fq->mq_flush_lock, flags);
238 if (fq->rq_status != BLK_STS_OK) {
239 error = fq->rq_status;
240 fq->rq_status = BLK_STS_OK;
250 running = &fq->flush_queue[fq->flush_running_idx];
251 BUG_ON(fq->flush_pending_idx == fq->flush_running_idx);
254 fq->flush_running_idx ^= 1;
261 blk_flush_complete_seq(rq, fq, seq, error);
264 spin_unlock_irqrestore(&fq->mq_flush_lock, flags);
275 * @fq: flush queue
282 * spin_lock_irq(fq->mq_flush_lock)
285 static void blk_kick_flush(struct request_queue *q, struct blk_flush_queue *fq,
288 struct list_head *pending = &fq->flush_queue[fq->flush_pending_idx];
291 struct request *flush_rq = fq->flush_rq;
294 if (fq->flush_pending_idx != fq->flush_running_idx || list_empty(pending))
298 if (!list_empty(&fq->flush_data_in_flight) &&
300 fq->flush_pending_since + FLUSH_PENDING_TIMEOUT))
307 fq->flush_pending_idx ^= 1;
357 struct blk_flush_queue *fq = blk_get_flush_queue(q, ctx);
368 spin_lock_irqsave(&fq->mq_flush_lock, flags);
369 blk_flush_complete_seq(rq, fq, REQ_FSEQ_DATA, error);
370 spin_unlock_irqrestore(&fq->mq_flush_lock, flags);
389 struct blk_flush_queue *fq = blk_get_flush_queue(q, rq->mq_ctx);
441 spin_lock_irq(&fq->mq_flush_lock);
442 blk_flush_complete_seq(rq, fq, REQ_FSEQ_ACTIONS & ~policy, 0);
443 spin_unlock_irq(&fq->mq_flush_lock);
472 struct blk_flush_queue *fq;
475 fq = kzalloc_node(sizeof(*fq), flags, node);
476 if (!fq)
479 spin_lock_init(&fq->mq_flush_lock);
482 fq->flush_rq = kzalloc_node(rq_sz, flags, node);
483 if (!fq->flush_rq)
486 INIT_LIST_HEAD(&fq->flush_queue[0]);
487 INIT_LIST_HEAD(&fq->flush_queue[1]);
488 INIT_LIST_HEAD(&fq->flush_data_in_flight);
490 return fq;
493 kfree(fq);
498 void blk_free_flush_queue(struct blk_flush_queue *fq)
501 if (!fq)
504 kfree(fq->flush_rq);
505 kfree(fq);
509 * Allow driver to set its own lock class to fq->mq_flush_lock for
516 * fq->mq_flush_lock for avoiding the lockdep warning.
524 * an hour is taken during SCSI MQ probe with per-fq lock class.
529 lockdep_set_class(&hctx->fq->mq_flush_lock, key);