Re: [RFC PATCH V2 12/17] SCSI: create admin queue for each host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ming

On 08/11/2018 03:12 PM, Ming Lei wrote:
> +static blk_status_t scsi_admin_queue_rq(struct blk_mq_hw_ctx *hctx,
> +			 const struct blk_mq_queue_data *bd)
> +{
> +	struct scsi_device *sdev = scsi_req(bd->rq)->sdev;
> +
> +	WARN_ON_ONCE(hctx->queue == sdev->request_queue);
> +
> +	if (!__scsi_mq_get_budget(hctx, sdev))
> +		return BLK_STS_RESOURCE;
> +
> +	return __scsi_queue_rq(hctx, bd, sdev);
> +}

Why does it return BLK_STS_RESOURCE here ?

Do you want to use the following code branch in blk_mq_dispatch_rq_list to get the admin queue rerun ?

		else if (needs_restart && (ret == BLK_STS_RESOURCE))
			blk_mq_delay_run_hw_queue(hctx, BLK_MQ_RESOURCE_DELAY);

In theory, BLK_STS_DEV_RESOURCE should be returned here. However, I guess it will not work. Because
the rr fashion loop restart has gone, the completion of normal queue will not restart the admin queue.
If yes, please add some comment here to describe it. :)

Thanks
Jianchao



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux