All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
To: Logan Gunthorpe <logang@deltatee.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 2/9] nvme: Create helper function to obtain command effects
Date: Thu, 11 Jun 2020 22:56:42 +0000	[thread overview]
Message-ID: <BYAPR04MB49658F968DC104E99B5C923286800@BYAPR04MB4965.namprd04.prod.outlook.com> (raw)
In-Reply-To: 20200514172253.6445-3-logang@deltatee.com

On 5/14/20 10:23 AM, Logan Gunthorpe wrote:
> Separate the code to obtain command effects from the code
> to start a passthru request and open code nvme_known_admin_effects()
> in the new helper.
> 
> The new helper function will be necessary for nvmet passthru
> code to determine if we need to change out of interrupt context
> to handle the effects.
> 
> Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
> Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 39 ++++++++++++++++++++++-----------------
>   1 file changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index d22859543e4b..5062a83c3634 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -1317,22 +1317,8 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
>   			metadata, meta_len, lower_32_bits(io.slba), NULL, 0);
>   }
>   
> -static u32 nvme_known_admin_effects(u8 opcode)
> -{
> -	switch (opcode) {
> -	case nvme_admin_format_nvm:
> -		return NVME_CMD_EFFECTS_CSUPP | NVME_CMD_EFFECTS_LBCC |
> -					NVME_CMD_EFFECTS_CSE_MASK;
> -	case nvme_admin_sanitize_nvm:
> -		return NVME_CMD_EFFECTS_CSE_MASK;
> -	default:
> -		break;
> -	}
> -	return 0;
> -}
> -
> -static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> -								u8 opcode)
> +static u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> +				u8 opcode)
>   {
>   	u32 effects = 0;
>   
> @@ -1348,7 +1334,26 @@ static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
>   
>   	if (ctrl->effects)
>   		effects = le32_to_cpu(ctrl->effects->acs[opcode]);
> -	effects |= nvme_known_admin_effects(opcode);
> +
> +	switch (opcode) {
> +	case nvme_admin_format_nvm:
> +		effects |= NVME_CMD_EFFECTS_CSUPP | NVME_CMD_EFFECTS_LBCC |
> +			NVME_CMD_EFFECTS_CSE_MASK;
> +		break;
> +	case nvme_admin_sanitize_nvm:
> +		effects |= NVME_CMD_EFFECTS_CSE_MASK;
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	return effects;
> +}
> +
> +static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> +			       u8 opcode)
> +{
> +	u32 effects = nvme_command_effects(ctrl, ns, opcode);
>   
>   	/*
>   	 * For simplicity, IO to all namespaces is quiesced even if the command
> 

Seems like you have changed the existing function body from
returning from switch to returning at the end of the function along with
the name that is why diff is large, which also adds an extra variable 
named "effect".

How about following ? which keeps the diff small and removes the extra 
variable and keeps the existing code as it.

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 78fc38b8356f..f47013fdc5ee 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1326,7 +1326,8 @@ static int nvme_submit_io(struct nvme_ns *ns, 
struct nvme_user_io __user *uio)
                         metadata, meta_len, lower_32_bits(io.slba), 
NULL, 0);
  }

-static u32 nvme_known_admin_effects(u8 opcode)
+static u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
+                               u8 opcode)
  {
         switch (opcode) {
         case nvme_admin_format_nvm:
@@ -1343,7 +1344,7 @@ static u32 nvme_known_admin_effects(u8 opcode)
  static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
                                                                 u8 opcode)
  {
-       u32 effects = 0;
+       u32 effects = nvme_command_effects(ctrl, ns, opcode);

         if (ns) {
                 if (ctrl->effects)
@@ -1357,7 +1358,6 @@ static u32 nvme_passthru_start(struct nvme_ctrl 
*ctrl, struct nvme_ns *ns,

         if (ctrl->effects)
                 effects = le32_to_cpu(ctrl->effects->acs[opcode]);
-       effects |= nvme_known_admin_effects(opcode);

         /*
          * For simplicity, IO to all namespaces is quiesced even if the 
command
-- 
2.22.1

WARNING: multiple messages have this Message-ID (diff)
From: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
To: Logan Gunthorpe <logang@deltatee.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 2/9] nvme: Create helper function to obtain command effects
Date: Thu, 11 Jun 2020 22:56:42 +0000	[thread overview]
Message-ID: <BYAPR04MB49658F968DC104E99B5C923286800@BYAPR04MB4965.namprd04.prod.outlook.com> (raw)
In-Reply-To: 20200514172253.6445-3-logang@deltatee.com

On 5/14/20 10:23 AM, Logan Gunthorpe wrote:
> Separate the code to obtain command effects from the code
> to start a passthru request and open code nvme_known_admin_effects()
> in the new helper.
> 
> The new helper function will be necessary for nvmet passthru
> code to determine if we need to change out of interrupt context
> to handle the effects.
> 
> Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
> Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 39 ++++++++++++++++++++++-----------------
>   1 file changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index d22859543e4b..5062a83c3634 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -1317,22 +1317,8 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
>   			metadata, meta_len, lower_32_bits(io.slba), NULL, 0);
>   }
>   
> -static u32 nvme_known_admin_effects(u8 opcode)
> -{
> -	switch (opcode) {
> -	case nvme_admin_format_nvm:
> -		return NVME_CMD_EFFECTS_CSUPP | NVME_CMD_EFFECTS_LBCC |
> -					NVME_CMD_EFFECTS_CSE_MASK;
> -	case nvme_admin_sanitize_nvm:
> -		return NVME_CMD_EFFECTS_CSE_MASK;
> -	default:
> -		break;
> -	}
> -	return 0;
> -}
> -
> -static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> -								u8 opcode)
> +static u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> +				u8 opcode)
>   {
>   	u32 effects = 0;
>   
> @@ -1348,7 +1334,26 @@ static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
>   
>   	if (ctrl->effects)
>   		effects = le32_to_cpu(ctrl->effects->acs[opcode]);
> -	effects |= nvme_known_admin_effects(opcode);
> +
> +	switch (opcode) {
> +	case nvme_admin_format_nvm:
> +		effects |= NVME_CMD_EFFECTS_CSUPP | NVME_CMD_EFFECTS_LBCC |
> +			NVME_CMD_EFFECTS_CSE_MASK;
> +		break;
> +	case nvme_admin_sanitize_nvm:
> +		effects |= NVME_CMD_EFFECTS_CSE_MASK;
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	return effects;
> +}
> +
> +static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
> +			       u8 opcode)
> +{
> +	u32 effects = nvme_command_effects(ctrl, ns, opcode);
>   
>   	/*
>   	 * For simplicity, IO to all namespaces is quiesced even if the command
> 

Seems like you have changed the existing function body from
returning from switch to returning at the end of the function along with
the name that is why diff is large, which also adds an extra variable 
named "effect".

How about following ? which keeps the diff small and removes the extra 
variable and keeps the existing code as it.

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 78fc38b8356f..f47013fdc5ee 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1326,7 +1326,8 @@ static int nvme_submit_io(struct nvme_ns *ns, 
struct nvme_user_io __user *uio)
                         metadata, meta_len, lower_32_bits(io.slba), 
NULL, 0);
  }

-static u32 nvme_known_admin_effects(u8 opcode)
+static u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
+                               u8 opcode)
  {
         switch (opcode) {
         case nvme_admin_format_nvm:
@@ -1343,7 +1344,7 @@ static u32 nvme_known_admin_effects(u8 opcode)
  static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
                                                                 u8 opcode)
  {
-       u32 effects = 0;
+       u32 effects = nvme_command_effects(ctrl, ns, opcode);

         if (ns) {
                 if (ctrl->effects)
@@ -1357,7 +1358,6 @@ static u32 nvme_passthru_start(struct nvme_ctrl 
*ctrl, struct nvme_ns *ns,

         if (ctrl->effects)
                 effects = le32_to_cpu(ctrl->effects->acs[opcode]);
-       effects |= nvme_known_admin_effects(opcode);

         /*
          * For simplicity, IO to all namespaces is quiesced even if the 
command
-- 
2.22.1

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

  reply	other threads:[~2020-06-11 22:56 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 [this message]
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
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=BYAPR04MB49658F968DC104E99B5C923286800@BYAPR04MB4965.namprd04.prod.outlook.com \
    --to=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=logang@deltatee.com \
    --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.