Skip to content

Commit

Permalink
scsi: storvsc: Correctly set number of hardware queues for IDE disk
Browse files Browse the repository at this point in the history
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/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>
  • Loading branch information
Long Li authored and Martin K. Petersen committed Jan 16, 2020
1 parent 42ec15c commit 7b571c1
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/scsi/storvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 7b571c1

Please sign in to comment.