Re: Device or HBA level QD throttling creates randomness in sequetial workload

From: Bart Van Assche
Date: Mon Jan 30 2017 - 11:31:26 EST


On Mon, 2017-01-30 at 19:22 +0530, Kashyap Desai wrote:
> - if (atomic_inc_return(&instance->fw_outstanding) >
> - instance->host->can_queue) {
> - atomic_dec(&instance->fw_outstanding);
> - return SCSI_MLQUEUE_HOST_BUSY;
> - }
> + if (atomic_inc_return(&instance->fw_outstanding) > safe_can_queue) {
> + is_nonrot = blk_queue_nonrot(scmd->device->request_queue);
> + /* For rotational device wait for sometime to get fusion command
> from pool.
> + * This is just to reduce proactive re-queue at mid layer which is
> not
> + * sending sorted IO in SCSI.MQ mode.
> + */
> + if (!is_nonrot)
> + udelay(100);
> + }

The SCSI core does not allow to sleep inside the queuecommand() callback
function.

Bart.