All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Max Gurtovoy <maxg@mellanox.com>
Cc: axboe@kernel.dk, jsmart2021@gmail.com, sagi@grimberg.me,
	martin.petersen@oracle.com, shlomin@mellanox.com,
	linux-rdma@vger.kernel.org, israelr@mellanox.com,
	vladimirk@mellanox.com, linux-nvme@lists.infradead.org,
	idanb@mellanox.com, jgg@mellanox.com, oren@mellanox.com,
	kbusch@kernel.org, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH 08/17] nvme-rdma: add metadata/T10-PI support
Date: Fri, 24 Apr 2020 09:09:30 +0200	[thread overview]
Message-ID: <20200424070930.GC24059@lst.de> (raw)
In-Reply-To: <688ec4ba-78e8-0ba3-9ee9-3c19b3e7b0c6@mellanox.com>

On Thu, Apr 23, 2020 at 12:22:27PM +0300, Max Gurtovoy wrote:
>>> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
>>> index e38f8f7..23cc77e 100644
>>> --- a/drivers/nvme/host/rdma.c
>>> +++ b/drivers/nvme/host/rdma.c
>>> @@ -67,6 +67,9 @@ struct nvme_rdma_request {
>>>   	struct ib_cqe		reg_cqe;
>>>   	struct nvme_rdma_queue  *queue;
>>>   	struct nvme_rdma_sgl	data_sgl;
>>> +	/* Metadata (T10-PI) support */
>>> +	struct nvme_rdma_sgl	*md_sgl;
>>> +	bool			use_md;
>> Do we need a use_md flag vs just using md_sgl as a boolean and/or
>> using blk_integrity_rq?
>
> md_sgl will be used if we'll get a blk request with blk_integrity (memory 
> domain).
>
> use_md will be responsible for wire domain.
>
> so instead of this bool we can check in any place (after prev commit 
> changes):
>
> "
>
> if (queue->pi_support && nvme_ns_has_pi(ns))
>                 req->use_md = c.common.opcode == nvme_cmd_write ||
>                               c.common.opcode == nvme_cmd_read;
>
> "
>
> And this is less readable IMO.

It would obviously have to go into a little helper, but I really hate
adding lots of little fields caching easily derived information.  There
are a few exception, for example if we really need to not touch too
many cache lines.  Do you have a git tree with your current code?  That
might be a little easier to follow than the various patches, maybe
I can think of something better.

>>> +	if (blk_integrity_rq(rq)) {
>>> +		memset(req->md_sgl, 0, sizeof(struct nvme_rdma_sgl));
>> Why do we need this memset?
>
> just good practice we took from drivers/scsi/scsi_lib.c.
>
> It's not a must and I can remove it if needed and test it.

I think (and please double check) that we initialize all three fields
anyway, so the memset should not be needed.

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

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Max Gurtovoy <maxg@mellanox.com>
Cc: Christoph Hellwig <hch@lst.de>,
	linux-nvme@lists.infradead.org, kbusch@kernel.org,
	sagi@grimberg.me, martin.petersen@oracle.com,
	jsmart2021@gmail.com, linux-rdma@vger.kernel.org,
	idanb@mellanox.com, axboe@kernel.dk, vladimirk@mellanox.com,
	oren@mellanox.com, shlomin@mellanox.com, israelr@mellanox.com,
	jgg@mellanox.com
Subject: Re: [PATCH 08/17] nvme-rdma: add metadata/T10-PI support
Date: Fri, 24 Apr 2020 09:09:30 +0200	[thread overview]
Message-ID: <20200424070930.GC24059@lst.de> (raw)
In-Reply-To: <688ec4ba-78e8-0ba3-9ee9-3c19b3e7b0c6@mellanox.com>

On Thu, Apr 23, 2020 at 12:22:27PM +0300, Max Gurtovoy wrote:
>>> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
>>> index e38f8f7..23cc77e 100644
>>> --- a/drivers/nvme/host/rdma.c
>>> +++ b/drivers/nvme/host/rdma.c
>>> @@ -67,6 +67,9 @@ struct nvme_rdma_request {
>>>   	struct ib_cqe		reg_cqe;
>>>   	struct nvme_rdma_queue  *queue;
>>>   	struct nvme_rdma_sgl	data_sgl;
>>> +	/* Metadata (T10-PI) support */
>>> +	struct nvme_rdma_sgl	*md_sgl;
>>> +	bool			use_md;
>> Do we need a use_md flag vs just using md_sgl as a boolean and/or
>> using blk_integrity_rq?
>
> md_sgl will be used if we'll get a blk request with blk_integrity (memory 
> domain).
>
> use_md will be responsible for wire domain.
>
> so instead of this bool we can check in any place (after prev commit 
> changes):
>
> "
>
> if (queue->pi_support && nvme_ns_has_pi(ns))
>                 req->use_md = c.common.opcode == nvme_cmd_write ||
>                               c.common.opcode == nvme_cmd_read;
>
> "
>
> And this is less readable IMO.

It would obviously have to go into a little helper, but I really hate
adding lots of little fields caching easily derived information.  There
are a few exception, for example if we really need to not touch too
many cache lines.  Do you have a git tree with your current code?  That
might be a little easier to follow than the various patches, maybe
I can think of something better.

>>> +	if (blk_integrity_rq(rq)) {
>>> +		memset(req->md_sgl, 0, sizeof(struct nvme_rdma_sgl));
>> Why do we need this memset?
>
> just good practice we took from drivers/scsi/scsi_lib.c.
>
> It's not a must and I can remove it if needed and test it.

I think (and please double check) that we initialize all three fields
anyway, so the memset should not be needed.

  reply	other threads:[~2020-04-24  7:09 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-27 17:15 [PATCH 00/17 V5] nvme-rdma/nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-03-27 17:15 ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 1/1] nvme-cli/fabrics: Add pi_enable param to connect cmd Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 01/17] nvme: introduce namespace features flag Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 11:59   ` Christoph Hellwig
2020-04-21 11:59     ` Christoph Hellwig
2020-04-21 15:53     ` James Smart
2020-04-21 15:53       ` James Smart
2020-04-21 18:11       ` Christoph Hellwig
2020-04-21 18:11         ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 02/17] nvme: Add has_md field to the nvme_req structure Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 11:59   ` Christoph Hellwig
2020-04-21 11:59     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 03/17] nvme: Enforce extended LBA format for fabrics metadata Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:08   ` Christoph Hellwig
2020-04-21 12:08     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 04/17] nvme: introduce max_integrity_segments ctrl attribute Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:09   ` Christoph Hellwig
2020-04-21 12:09     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 05/17] nvme-fabrics: Allow user enabling metadata/T10-PI support Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:12   ` Christoph Hellwig
2020-04-21 12:12     ` Christoph Hellwig
2020-04-21 15:17   ` Christoph Hellwig
2020-04-21 15:17     ` Christoph Hellwig
2020-04-22 22:07     ` Max Gurtovoy
2020-04-22 22:07       ` Max Gurtovoy
2020-04-22 22:24       ` James Smart
2020-04-22 22:24         ` James Smart
2020-04-22 22:39         ` Max Gurtovoy
2020-04-22 22:39           ` Max Gurtovoy
2020-04-23  5:54           ` Christoph Hellwig
2020-04-23  5:54             ` Christoph Hellwig
2020-04-23  7:30             ` Max Gurtovoy
2020-04-23  7:30               ` Max Gurtovoy
2020-04-24  7:06               ` Christoph Hellwig
2020-04-24  7:06                 ` Christoph Hellwig
2020-04-26  9:48                 ` Max Gurtovoy
2020-04-26  9:48                   ` Max Gurtovoy
2020-04-27  6:04                   ` Christoph Hellwig
2020-04-27  6:04                     ` Christoph Hellwig
2020-04-27 13:52                     ` Max Gurtovoy
2020-04-27 13:52                       ` Max Gurtovoy
2020-04-27 13:54                       ` Christoph Hellwig
2020-04-27 13:54                         ` Christoph Hellwig
2020-04-28  9:18                         ` Max Gurtovoy
2020-04-28  9:18                           ` Max Gurtovoy
2020-04-23  5:53       ` Christoph Hellwig
2020-04-23  5:53         ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 06/17] nvme: introduce NVME_INLINE_MD_SG_CNT Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:12   ` Christoph Hellwig
2020-04-21 12:12     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 07/17] nvme-rdma: Introduce nvme_rdma_sgl structure Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:13   ` Christoph Hellwig
2020-04-21 12:13     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 08/17] nvme-rdma: add metadata/T10-PI support Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 12:20   ` Christoph Hellwig
2020-04-21 12:20     ` Christoph Hellwig
2020-04-23  9:22     ` Max Gurtovoy
2020-04-23  9:22       ` Max Gurtovoy
2020-04-24  7:09       ` Christoph Hellwig [this message]
2020-04-24  7:09         ` Christoph Hellwig
2020-04-26 10:04         ` Max Gurtovoy
2020-04-26 10:04           ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 09/17] nvmet: prepare metadata request Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:21   ` Christoph Hellwig
2020-04-21 15:21     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 10/17] nvmet: add metadata characteristics for a namespace Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:23   ` Christoph Hellwig
2020-04-21 15:23     ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 11/17] nvmet: Rename nvmet_rw_len to nvmet_rw_data_len Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 12/17] nvmet: Rename nvmet_check_data_len to nvmet_check_transfer_len Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 13/17] nvme: Add Metadata Capabilities enumerations Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:24   ` Christoph Hellwig
2020-04-21 15:24     ` Christoph Hellwig
2020-04-23 12:09     ` Max Gurtovoy
2020-04-23 12:09       ` Max Gurtovoy
2020-04-24  7:12       ` Christoph Hellwig
2020-04-24  7:12         ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 14/17] nvmet: Add metadata/T10-PI support Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:30   ` Christoph Hellwig
2020-04-21 15:30     ` Christoph Hellwig
2020-04-23 12:39     ` Max Gurtovoy
2020-04-23 12:39       ` Max Gurtovoy
2020-04-24  7:14       ` Christoph Hellwig
2020-04-24  7:14         ` Christoph Hellwig
2020-04-26 10:50         ` Max Gurtovoy
2020-04-26 10:50           ` Max Gurtovoy
2020-04-27  6:06           ` Christoph Hellwig
2020-04-27  6:06             ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 15/17] nvmet: Add metadata support for block devices Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:33   ` Christoph Hellwig
2020-04-21 15:33     ` Christoph Hellwig
2020-04-23 17:25     ` Max Gurtovoy
2020-04-23 17:25       ` Max Gurtovoy
2020-04-24  7:54       ` Christoph Hellwig
2020-04-24  7:54         ` Christoph Hellwig
2020-03-27 17:15 ` [PATCH 16/17] RDMA/rw: Expose maximal page list for a device per 1 MR Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-03-27 17:15 ` [PATCH 17/17] nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-03-27 17:15   ` Max Gurtovoy
2020-04-21 15:37   ` Christoph Hellwig
2020-04-21 15:37     ` Christoph Hellwig

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=20200424070930.GC24059@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=idanb@mellanox.com \
    --cc=israelr@mellanox.com \
    --cc=jgg@mellanox.com \
    --cc=jsmart2021@gmail.com \
    --cc=kbusch@kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=maxg@mellanox.com \
    --cc=oren@mellanox.com \
    --cc=sagi@grimberg.me \
    --cc=shlomin@mellanox.com \
    --cc=vladimirk@mellanox.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.