All of lore.kernel.org
 help / color / mirror / Atom feed
From: Logan Gunthorpe <logang@deltatee.com>
To: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-nvme@lists.infradead.org" <linux-nvme@lists.infradead.org>
Cc: Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
	Keith Busch <kbusch@kernel.org>, Jens Axboe <axboe@fb.com>,
	Max Gurtovoy <maxg@mellanox.com>,
	Stephen Bates <sbates@raithlin.com>
Subject: Re: [PATCH v13 7/9] nvmet-passthru: Add passthru code to process commands
Date: Thu, 11 Jun 2020 17:46:54 -0600	[thread overview]
Message-ID: <cbe637ec-e80c-def1-2453-70059715e19c@deltatee.com> (raw)
In-Reply-To: <BYAPR04MB4965379CE8694F52D684993386800@BYAPR04MB4965.namprd04.prod.outlook.com>



On 2020-06-11 5:45 p.m., Chaitanya Kulkarni wrote:
> On 5/14/20 10:23 AM, Logan Gunthorpe wrote:
>> +
>> +static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
>> +{
>> +	struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
>> +	struct nvme_ns *ns = NULL;
>> +	struct request *rq = NULL;
>> +	struct request_queue *q;
>> +	u32 effects;
>> +	u16 status;
>> +	int ret;
>> +
>> +	if (likely(req->sq->qid != 0)) {
>> +		u32 nsid = le32_to_cpu(req->cmd->common.nsid);
>> +
>> +		ns = nvme_find_get_ns(ctrl, nsid);
>> +		if (unlikely(!ns)) {
>> +			pr_err("failed to get passthru ns nsid:%u\n", nsid);
>> +			status = NVME_SC_INVALID_NS | NVME_SC_DNR;
>> +			goto fail_out;
>> +		}
>> +	}
>> +
>> +	if (ns)
>> +		q = ns->queue;
>> +	else
>> +		q = ctrl->admin_q;
> 
> Is it possible to avoid explicit if.. else in fast path given that the
> condition exists and we can take an advantage of that, how about
> following ?
> 
> diff --git a/drivers/nvme/target/passthru.c b/drivers/nvme/target/passthru.c
> index 9e71fdfbdbb3..4f8e022d254c 100644
> --- a/drivers/nvme/target/passthru.c
> +++ b/drivers/nvme/target/passthru.c
> @@ -84,9 +84,9 @@ static int nvmet_passthru_map_sg(struct nvmet_req 
> *req, struct request *rq)
>   static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
>   {
>          struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
> +       struct request_queue *q = ctrl->admin_q;
>          struct nvme_ns *ns = NULL;
>          struct request *rq = NULL;
> -       struct request_queue *q;
>          u32 effects;
>          u16 status;
>          int ret;
> @@ -100,12 +100,8 @@ static void nvmet_passthru_execute_cmd(struct 
> nvmet_req *req)
>                          status = NVME_SC_INVALID_NS | NVME_SC_DNR;
>                          goto fail_out;
>                  }
> -       }
> -
> -       if (ns)
>                  q = ns->queue;
> -       else
> -               q = ctrl->admin_q;
> +       }
> 
>          rq = nvme_alloc_request(q, req->cmd, BLK_MQ_REQ_NOWAIT, 
> NVME_QID_ANY);
>          if (IS_ERR(rq)) {
> 


This makes sense. Will fix for the next revision.

Thanks,

Logan

WARNING: multiple messages have this Message-ID (diff)
From: Logan Gunthorpe <logang@deltatee.com>
To: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-nvme@lists.infradead.org" <linux-nvme@lists.infradead.org>
Cc: Sagi Grimberg <sagi@grimberg.me>,
	Stephen Bates <sbates@raithlin.com>, Jens Axboe <axboe@fb.com>,
	Keith Busch <kbusch@kernel.org>, Max Gurtovoy <maxg@mellanox.com>,
	Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v13 7/9] nvmet-passthru: Add passthru code to process commands
Date: Thu, 11 Jun 2020 17:46:54 -0600	[thread overview]
Message-ID: <cbe637ec-e80c-def1-2453-70059715e19c@deltatee.com> (raw)
In-Reply-To: <BYAPR04MB4965379CE8694F52D684993386800@BYAPR04MB4965.namprd04.prod.outlook.com>



On 2020-06-11 5:45 p.m., Chaitanya Kulkarni wrote:
> On 5/14/20 10:23 AM, Logan Gunthorpe wrote:
>> +
>> +static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
>> +{
>> +	struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
>> +	struct nvme_ns *ns = NULL;
>> +	struct request *rq = NULL;
>> +	struct request_queue *q;
>> +	u32 effects;
>> +	u16 status;
>> +	int ret;
>> +
>> +	if (likely(req->sq->qid != 0)) {
>> +		u32 nsid = le32_to_cpu(req->cmd->common.nsid);
>> +
>> +		ns = nvme_find_get_ns(ctrl, nsid);
>> +		if (unlikely(!ns)) {
>> +			pr_err("failed to get passthru ns nsid:%u\n", nsid);
>> +			status = NVME_SC_INVALID_NS | NVME_SC_DNR;
>> +			goto fail_out;
>> +		}
>> +	}
>> +
>> +	if (ns)
>> +		q = ns->queue;
>> +	else
>> +		q = ctrl->admin_q;
> 
> Is it possible to avoid explicit if.. else in fast path given that the
> condition exists and we can take an advantage of that, how about
> following ?
> 
> diff --git a/drivers/nvme/target/passthru.c b/drivers/nvme/target/passthru.c
> index 9e71fdfbdbb3..4f8e022d254c 100644
> --- a/drivers/nvme/target/passthru.c
> +++ b/drivers/nvme/target/passthru.c
> @@ -84,9 +84,9 @@ static int nvmet_passthru_map_sg(struct nvmet_req 
> *req, struct request *rq)
>   static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
>   {
>          struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
> +       struct request_queue *q = ctrl->admin_q;
>          struct nvme_ns *ns = NULL;
>          struct request *rq = NULL;
> -       struct request_queue *q;
>          u32 effects;
>          u16 status;
>          int ret;
> @@ -100,12 +100,8 @@ static void nvmet_passthru_execute_cmd(struct 
> nvmet_req *req)
>                          status = NVME_SC_INVALID_NS | NVME_SC_DNR;
>                          goto fail_out;
>                  }
> -       }
> -
> -       if (ns)
>                  q = ns->queue;
> -       else
> -               q = ctrl->admin_q;
> +       }
> 
>          rq = nvme_alloc_request(q, req->cmd, BLK_MQ_REQ_NOWAIT, 
> NVME_QID_ANY);
>          if (IS_ERR(rq)) {
> 


This makes sense. Will fix for the next revision.

Thanks,

Logan

_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

  reply	other threads:[~2020-06-11 23:47 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14 17:22 [PATCH v13 0/9] nvmet: add target passthru commands support Logan Gunthorpe
2020-05-14 17:22 ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 1/9] nvme-core: Clear any SGL flags in passthru commands Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 2/9] nvme: Create helper function to obtain command effects Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-06-11 22:56   ` Chaitanya Kulkarni
2020-06-11 22:56     ` Chaitanya Kulkarni
2020-06-11 23:09     ` Logan Gunthorpe
2020-06-11 23:09       ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 3/9] nvme: Move nvme_passthru_[start|end]() calls to common helper Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 4/9] nvmet-passthru: Introduce NVMet passthru Kconfig option Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 5/9] nvme-core: Introduce nvme_ctrl_get_by_path() Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-06-11 23:02   ` Chaitanya Kulkarni
2020-06-11 23:02     ` Chaitanya Kulkarni
2020-06-11 23:09     ` Logan Gunthorpe
2020-06-11 23:09       ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 6/9] nvme: Export existing nvme core functions Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 7/9] nvmet-passthru: Add passthru code to process commands Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-06-11 23:45   ` Chaitanya Kulkarni
2020-06-11 23:45     ` Chaitanya Kulkarni
2020-06-11 23:46     ` Logan Gunthorpe [this message]
2020-06-11 23:46       ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 8/9] nvmet-passthru: Add enable/disable helpers Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-06-11 23:05   ` Chaitanya Kulkarni
2020-06-11 23:05     ` Chaitanya Kulkarni
2020-06-11 23:14     ` Logan Gunthorpe
2020-06-11 23:14       ` Logan Gunthorpe
2020-06-11 23:32       ` Chaitanya Kulkarni
2020-06-11 23:32         ` Chaitanya Kulkarni
2020-06-11 23:13   ` Chaitanya Kulkarni
2020-06-11 23:13     ` Chaitanya Kulkarni
2020-06-11 23:24     ` Logan Gunthorpe
2020-06-11 23:24       ` Logan Gunthorpe
2020-05-14 17:22 ` [PATCH v13 9/9] nvmet-configfs: Introduce passthru configfs interface Logan Gunthorpe
2020-05-14 17:22   ` Logan Gunthorpe
2020-06-11 19:16 ` [PATCH v13 0/9] nvmet: add target passthru commands support Chaitanya Kulkarni
2020-06-11 19:16   ` Chaitanya Kulkarni
2020-06-11 19:19   ` Logan Gunthorpe
2020-06-11 19:19     ` Logan Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cbe637ec-e80c-def1-2453-70059715e19c@deltatee.com \
    --to=logang@deltatee.com \
    --cc=Chaitanya.Kulkarni@wdc.com \
    --cc=axboe@fb.com \
    --cc=hch@lst.de \
    --cc=kbusch@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=maxg@mellanox.com \
    --cc=sagi@grimberg.me \
    --cc=sbates@raithlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.