Message ID | 20230721172731.955724-3-bvanassche@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Improve performance for BLK_MQ_F_BLOCKING drivers | expand |
Bart, > blk_mq_kick_requeue_list() calls blk_mq_run_hw_queues() asynchronously. > Leave out the direct blk_mq_run_hw_queues() call. This patch causes > scsi_run_queue() to call blk_mq_run_hw_queues() asynchronously instead > of synchronously. Since scsi_run_queue() is not called from the hot I/O > submission path, this patch does not affect the hot path. > > This patch prepares for allowing blk_mq_run_hw_queue() to sleep if > BLK_MQ_F_BLOCKING has been set. scsi_run_queue() may be called from > atomic context and must not sleep. Hence the removal of the > blk_mq_run_hw_queues(q, false) call. See also scsi_unblock_requests(). Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 414d29eef968..d4c514ab9fe8 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -447,8 +447,8 @@ static void scsi_run_queue(struct request_queue *q) if (!list_empty(&sdev->host->starved_list)) scsi_starved_list_run(sdev->host); + /* Note: blk_mq_kick_requeue_list() runs the queue asynchronously. */ blk_mq_kick_requeue_list(q); - blk_mq_run_hw_queues(q, false); } void scsi_requeue_run_queue(struct work_struct *work)
blk_mq_kick_requeue_list() calls blk_mq_run_hw_queues() asynchronously. Leave out the direct blk_mq_run_hw_queues() call. This patch causes scsi_run_queue() to call blk_mq_run_hw_queues() asynchronously instead of synchronously. Since scsi_run_queue() is not called from the hot I/O submission path, this patch does not affect the hot path. This patch prepares for allowing blk_mq_run_hw_queue() to sleep if BLK_MQ_F_BLOCKING has been set. scsi_run_queue() may be called from atomic context and must not sleep. Hence the removal of the blk_mq_run_hw_queues(q, false) call. See also scsi_unblock_requests(). Cc: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/scsi/scsi_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)