Skip to content

Commit 7b571c1

Browse files
longlimsftmartinkpetersen
authored andcommitted
scsi: storvsc: Correctly set number of hardware queues for IDE disk
Commit 0ed8810 ("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: 0ed8810 ("scsi: storvsc: setup 1:1 mapping between hardware queue and CPU queue") Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Ming Lei <[email protected]> Signed-off-by: Long Li <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 42ec15c commit 7b571c1

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/scsi/storvsc_drv.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1842,9 +1842,11 @@ static int storvsc_probe(struct hv_device *device,
18421842
*/
18431843
host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT);
18441844
/*
1845+
* For non-IDE disks, the host supports multiple channels.
18451846
* Set the number of HW queues we are supporting.
18461847
*/
1847-
host->nr_hw_queues = num_present_cpus();
1848+
if (!dev_is_ide)
1849+
host->nr_hw_queues = num_present_cpus();
18481850

18491851
/*
18501852
* Set the error handler work queue.

0 commit comments

Comments
 (0)