mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-18 21:25:11 +00:00
blk-mq: move the !async handling out of __blk_mq_delay_run_hw_queue
Only blk_mq_run_hw_queue can call __blk_mq_delay_run_hw_queue with async=false, so move the handling there. With this __blk_mq_delay_run_hw_queue can be merged into blk_mq_delay_run_hw_queue. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Link: https://lore.kernel.org/r/20230413060651.694656-5-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
cd735e1113
commit
1aa8d875b5
1 changed files with 14 additions and 28 deletions
|
@ -2211,31 +2211,6 @@ select_cpu:
|
||||||
return next_cpu;
|
return next_cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* __blk_mq_delay_run_hw_queue - Run (or schedule to run) a hardware queue.
|
|
||||||
* @hctx: Pointer to the hardware queue to run.
|
|
||||||
* @async: If we want to run the queue asynchronously.
|
|
||||||
* @msecs: Milliseconds of delay to wait before running the queue.
|
|
||||||
*
|
|
||||||
* If !@async, try to run the queue now. Else, run the queue asynchronously and
|
|
||||||
* with a delay of @msecs.
|
|
||||||
*/
|
|
||||||
static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async,
|
|
||||||
unsigned long msecs)
|
|
||||||
{
|
|
||||||
if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
|
|
||||||
if (cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask)) {
|
|
||||||
__blk_mq_run_hw_queue(hctx);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unlikely(blk_mq_hctx_stopped(hctx)))
|
|
||||||
return;
|
|
||||||
kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
|
|
||||||
msecs_to_jiffies(msecs));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* blk_mq_delay_run_hw_queue - Run a hardware queue asynchronously.
|
* blk_mq_delay_run_hw_queue - Run a hardware queue asynchronously.
|
||||||
* @hctx: Pointer to the hardware queue to run.
|
* @hctx: Pointer to the hardware queue to run.
|
||||||
|
@ -2245,7 +2220,10 @@ static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async,
|
||||||
*/
|
*/
|
||||||
void blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
|
void blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
|
||||||
{
|
{
|
||||||
__blk_mq_delay_run_hw_queue(hctx, true, msecs);
|
if (unlikely(blk_mq_hctx_stopped(hctx)))
|
||||||
|
return;
|
||||||
|
kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
|
||||||
|
msecs_to_jiffies(msecs));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_mq_delay_run_hw_queue);
|
EXPORT_SYMBOL(blk_mq_delay_run_hw_queue);
|
||||||
|
|
||||||
|
@ -2274,8 +2252,16 @@ void blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
|
||||||
need_run = !blk_queue_quiesced(hctx->queue) &&
|
need_run = !blk_queue_quiesced(hctx->queue) &&
|
||||||
blk_mq_hctx_has_pending(hctx));
|
blk_mq_hctx_has_pending(hctx));
|
||||||
|
|
||||||
if (need_run)
|
if (!need_run)
|
||||||
__blk_mq_delay_run_hw_queue(hctx, async, 0);
|
return;
|
||||||
|
|
||||||
|
if (async || (hctx->flags & BLK_MQ_F_BLOCKING) ||
|
||||||
|
!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask)) {
|
||||||
|
blk_mq_delay_run_hw_queue(hctx, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
__blk_mq_run_hw_queue(hctx);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_mq_run_hw_queue);
|
EXPORT_SYMBOL(blk_mq_run_hw_queue);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue