mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 05:13:18 +00:00
block: remove blk_flush_policy
Fold blk_flush_policy into the only caller to prepare for pending changes to it. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Link: https://lore.kernel.org/r/20240617060532.127975-13-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
af28141498
commit
70905f8706
@ -100,23 +100,6 @@ blk_get_flush_queue(struct request_queue *q, struct blk_mq_ctx *ctx)
|
|||||||
return blk_mq_map_queue(q, REQ_OP_FLUSH, ctx)->fq;
|
return blk_mq_map_queue(q, REQ_OP_FLUSH, ctx)->fq;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int blk_flush_policy(unsigned long fflags, struct request *rq)
|
|
||||||
{
|
|
||||||
unsigned int policy = 0;
|
|
||||||
|
|
||||||
if (blk_rq_sectors(rq))
|
|
||||||
policy |= REQ_FSEQ_DATA;
|
|
||||||
|
|
||||||
if (fflags & (1UL << QUEUE_FLAG_WC)) {
|
|
||||||
if (rq->cmd_flags & REQ_PREFLUSH)
|
|
||||||
policy |= REQ_FSEQ_PREFLUSH;
|
|
||||||
if (!(fflags & (1UL << QUEUE_FLAG_FUA)) &&
|
|
||||||
(rq->cmd_flags & REQ_FUA))
|
|
||||||
policy |= REQ_FSEQ_POSTFLUSH;
|
|
||||||
}
|
|
||||||
return policy;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned int blk_flush_cur_seq(struct request *rq)
|
static unsigned int blk_flush_cur_seq(struct request *rq)
|
||||||
{
|
{
|
||||||
return 1 << ffz(rq->flush.seq);
|
return 1 << ffz(rq->flush.seq);
|
||||||
@ -399,12 +382,26 @@ bool blk_insert_flush(struct request *rq)
|
|||||||
{
|
{
|
||||||
struct request_queue *q = rq->q;
|
struct request_queue *q = rq->q;
|
||||||
unsigned long fflags = q->queue_flags; /* may change, cache */
|
unsigned long fflags = q->queue_flags; /* may change, cache */
|
||||||
unsigned int policy = blk_flush_policy(fflags, rq);
|
|
||||||
struct blk_flush_queue *fq = blk_get_flush_queue(q, rq->mq_ctx);
|
struct blk_flush_queue *fq = blk_get_flush_queue(q, rq->mq_ctx);
|
||||||
|
unsigned int policy = 0;
|
||||||
|
|
||||||
/* FLUSH/FUA request must never be merged */
|
/* FLUSH/FUA request must never be merged */
|
||||||
WARN_ON_ONCE(rq->bio != rq->biotail);
|
WARN_ON_ONCE(rq->bio != rq->biotail);
|
||||||
|
|
||||||
|
if (blk_rq_sectors(rq))
|
||||||
|
policy |= REQ_FSEQ_DATA;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check which flushes we need to sequence for this operation.
|
||||||
|
*/
|
||||||
|
if (fflags & (1UL << QUEUE_FLAG_WC)) {
|
||||||
|
if (rq->cmd_flags & REQ_PREFLUSH)
|
||||||
|
policy |= REQ_FSEQ_PREFLUSH;
|
||||||
|
if (!(fflags & (1UL << QUEUE_FLAG_FUA)) &&
|
||||||
|
(rq->cmd_flags & REQ_FUA))
|
||||||
|
policy |= REQ_FSEQ_POSTFLUSH;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @policy now records what operations need to be done. Adjust
|
* @policy now records what operations need to be done. Adjust
|
||||||
* REQ_PREFLUSH and FUA for the driver.
|
* REQ_PREFLUSH and FUA for the driver.
|
||||||
|
Loading…
Reference in New Issue
Block a user