Re: [PATCH 6/6] scsi: hisi_sas: Expose multiple hw queues for v3 as experimental

From: John Garry
Date: Mon Nov 11 2019 - 09:02:32 EST


On 27/10/2019 08:19, Ming Lei wrote:
.this_id = -1,
@@ -3265,8 +3300,14 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
shost->max_lun = ~0;
shost->max_channel = 1;
shost->max_cmd_len = 16;
- shost->can_queue = HISI_SAS_UNRESERVED_IPTT;
- shost->cmd_per_lun = HISI_SAS_UNRESERVED_IPTT;
+

Hi Ming,

I mentioned in the thread "blk-mq: improvement on handling IO during CPU hotplug" that I was using this series to test that patchset.

So just with this patchset (and without yours), I get what looks like some IO errors in the LLDD. The error is an underflow error. I can't figure out what is the cause.

I'm wondering if the SCSI command is getting corrupted someway.

+ if (expose_mq_experimental) {
+ shost->can_queue = HISI_SAS_MAX_COMMANDS;
+ shost->cmd_per_lun = HISI_SAS_MAX_COMMANDS;
The above is contradictory with current 'nr_hw_queues''s meaning,
see commit on Scsi_Host.nr_hw_queues.


Right, so I am generating the hostwide tag in the LLDD. And the Scsi host-wide host_busy counter should ensure that we don't pump too much IO to the HBA.

What other problem will this cause?

Thanks,
John


/*
* In scsi-mq mode, the number of hardware queues supported by the LLD.
*
* Note: it is assumed that each hardware queue has a queue depth of
* can_queue. In other words, the total queue depth per host
* is nr_hw_queues * can_queue.
*/

Also this implementation wastes memory too much.


thanks,
Ming