scsi: storvsc: Correctly set number of hardware queues for IDE disk

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.

Fix it by leaving the number of hardware queues to 1 (default value) for
IDE disks.

Fixes: 0ed881027690 ("scsi: storvsc: setup 1:1 mapping between hardware queue and CPU queue")
Link: https://lore.kernel.org/r/1578960516-108228-1-git-send-email-longli@linuxonhyperv.com
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Long Li <longli@microsoft.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by Long Li and committed by Martin K. Petersen 7b571c19 42ec15ce

Changed files
+3 -1
drivers
+3 -1
drivers/scsi/storvsc_drv.c
··· 1842 1842 */ 1843 1843 host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT); 1844 1844 /* 1845 + * For non-IDE disks, the host supports multiple channels. 1845 1846 * Set the number of HW queues we are supporting. 1846 1847 */ 1847 - host->nr_hw_queues = num_present_cpus(); 1848 + if (!dev_is_ide) 1849 + host->nr_hw_queues = num_present_cpus(); 1848 1850 1849 1851 /* 1850 1852 * Set the error handler work queue.