I think this should be merged with the previous patch. > void blk_mq_kick_requeue_list(struct request_queue *q) > { > + blk_mq_run_hw_queues(q, true); > } > EXPORT_SYMBOL(blk_mq_kick_requeue_list); Pleae just remove blk_mq_kick_requeue_list entirely. > > > void blk_mq_delay_kick_requeue_list(struct request_queue *q, > unsigned long msecs) > { > + blk_mq_delay_run_hw_queues(q, msecs); > } > EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list); Same for blk_mq_delay_kick_requeue_list. > if (!sq_hctx || sq_hctx == hctx || > - !list_empty_careful(&hctx->dispatch)) > + blk_mq_hctx_has_pending(hctx)) > blk_mq_run_hw_queue(hctx, async); > } > } > @@ -2353,7 +2341,7 @@ void blk_mq_delay_run_hw_queues(struct request_queue *q, unsigned long msecs) > * scheduler. > */ > if (!sq_hctx || sq_hctx == hctx || > - !list_empty_careful(&hctx->dispatch)) > + blk_mq_hctx_has_pending(hctx)) This check would probably benefit from being factored into a helper.