Message ID | 1578960516-108228-1-git-send-email-longli@linuxonhyperv.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 7b571c19d4c0b78d27dd3bf1f3c42e4032390af6 |
Headers | show |
Series | [v2] scsi: storvsc: Correctly set number of hardware queues for IDE disk | expand |
Long, > Commit 0ed881027690 ("scsi: storvsc: setup 1:1 mapping between > hardware queue and CPU queue") introduced a regression for disks > attached to IDE. For these disks the host VSP only offers one VMBUS > channel. Setting multiple queues can overload the VMBUS channel and > result in performance drop for high queue depth workload on system > with large number of CPUs. Applied to 5.5/scsi-fixes, thanks!
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index f8faf8b3d965..fb41636519ee 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -1842,9 +1842,11 @@ static int storvsc_probe(struct hv_device *device, */ host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT); /* + * For non-IDE disks, the host supports multiple channels. * Set the number of HW queues we are supporting. */ - host->nr_hw_queues = num_present_cpus(); + if (!dev_is_ide) + host->nr_hw_queues = num_present_cpus(); /* * Set the error handler work queue.