lkml.org 
[lkml]   [2019]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH] storvsc: setup 1:1 mapping between hardware queue and CPU queue
    On Tue, Aug 20, 2019 at 3:36 AM <longli@linuxonhyperv.com> wrote:
    >
    > From: Long Li <longli@microsoft.com>
    >
    > storvsc doesn't use a dedicated hardware queue for a given CPU queue. When
    > issuing I/O, it selects returning CPU (hardware queue) dynamically based on
    > vmbus channel usage across all channels.
    >
    > This patch sets up a 1:1 mapping between hardware queue and CPU queue, thus
    > avoiding unnecessary locking at upper layer when issuing I/O.
    >
    > Signed-off-by: Long Li <longli@microsoft.com>
    > ---
    > drivers/scsi/storvsc_drv.c | 16 ++++++++++++++--
    > 1 file changed, 14 insertions(+), 2 deletions(-)
    >
    > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
    > index b89269120a2d..26c16d40ec46 100644
    > --- a/drivers/scsi/storvsc_drv.c
    > +++ b/drivers/scsi/storvsc_drv.c
    > @@ -1682,6 +1682,18 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
    > return 0;
    > }
    >
    > +static int storvsc_map_queues(struct Scsi_Host *shost)
    > +{
    > + unsigned int cpu;
    > + struct blk_mq_queue_map *qmap = &shost->tag_set.map[HCTX_TYPE_DEFAULT];
    > +
    > + for_each_possible_cpu(cpu) {
    > + qmap->mq_map[cpu] = cpu;
    > + }

    Block layer provides the helper of blk_mq_map_queues(), so suggest you to use
    the default cpu mapping, instead of inventing a new one.

    thanks,
    Ming Lei

    \
     
     \ /
      Last update: 2019-08-22 12:56    [W:3.008 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site