All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Gurtovoy <maxg@mellanox.com>
To: Keith Busch <kbusch@kernel.org>
Cc: axboe@kernel.dk, sagi@grimberg.me, martin.petersen@oracle.com,
	shlomin@mellanox.com, israelr@mellanox.com,
	vladimirk@mellanox.com, linux-nvme@lists.infradead.org,
	idanb@mellanox.com, oren@mellanox.com, hch@lst.de
Subject: Re: [PATCH 01/15] nvme: Introduce namespace features flag
Date: Wed, 8 Jan 2020 14:00:53 +0200	[thread overview]
Message-ID: <a243f1cb-3564-d839-7a5c-44c19409ce79@mellanox.com> (raw)
In-Reply-To: <20200107180716.GA603371@chuupie.wdl.wdc.com>


On 1/7/2020 8:07 PM, Keith Busch wrote:
> On Mon, Jan 06, 2020 at 03:37:22PM +0200, Max Gurtovoy wrote:
>> From: Israel Rukshin <israelr@mellanox.com>
>>
>> Centralize all the integrity checks to one place and make the code more
>> readable. Also add has_pi field to the nvme_req structure as well, so the
>> transport drivers could use it.
> I think the two changes should be in different patches, splitting the
> namespace "features" flags from nvme_request "has_pi". I'm not even
> sure there's a need for the per-IO settings and checks for "has_pi",
> though. I don't find any transport driver changes in this series using
> this flag outside this patch.

Sure, we can split it to 2 commits.

"has_pi" flag is used by RDMA transport (commit 7/15 "nvme-rdma: Add 
metadata/T10-PI support")

>   
>> @@ -1834,12 +1831,29 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
>> +	if (ns->ms) {
>> +		if (id->flbas & NVME_NS_FLBAS_META_EXT)
>> +			ns->features |= NVME_NS_EXT_LBAS;
>> +
>> +		/*
>> +		 * For PCI, Extended logical block will be generated by the
>> +		 * controller.
>> +		 */
>> +		if (ns->ctrl->ops->flags & NVME_F_METADATA_SUPPORTED) {
>> +			if (!(ns->features & NVME_NS_EXT_LBAS))
> A little simpler:
>
> 		if (id->flbas & NVME_NS_FLBAS_META_EXT)
> 			ns->features |= NVME_NS_EXT_LBAS;
> 		else if (ns->ctrl->ops->flags & NVME_F_METADATA_SUPPORTED)
> 			ns->features |= NVME_NS_DIX_SUPPORTED;

In fabrics case this will not be true...

>
>> +				ns->features |= NVME_NS_DIX_SUPPORTED;
>> +		}
>> +	}
> It's not really a "DIX" flag since we can observe separate metadata
> formats for non-DIX related use. Can we use a more generic name for this
> feature flag? maybe "NVME_NS_MS_SEPARATE".

The meaning of NVME_NS_DIX_SUPPORTED is that the block layer is 
*allowed* to send metadata to the namespace (and we later on will call 
nvme_init_integrity).

In case of PCI transport, this will be set only if the SSD use 
"separate" mode since Linux block layer only support "separate" mode and 
the nvme_pci driver pass these buffers to the drive (no conversion to 
extended mode if needed).

In case of fabrics transport, this will be set only if the user asked 
for metadata support in the connect command (pi_enable). Again, Linux 
block layer will send "separate" buffers and the transport driver will 
transform it to "extended" mode (this is a *must* since in fabrics, 
according to the spec, only extended mode supported).




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

  reply	other threads:[~2020-01-08 12:02 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-06 13:37 [PATCH 00/15 V3] nvme-rdma/nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-01-06 13:37 ` [PATCH] nvme-cli/fabrics: Add pi_enable param to connect cmd Max Gurtovoy
2020-01-06 13:37 ` [PATCH 01/15] nvme: Introduce namespace features flag Max Gurtovoy
2020-01-07 18:07   ` Keith Busch
2020-01-08 12:00     ` Max Gurtovoy [this message]
2020-01-09  3:11   ` Martin K. Petersen
2020-01-09 10:38     ` Max Gurtovoy
2020-01-09 16:26       ` Keith Busch
2020-01-12  9:40         ` Max Gurtovoy
2020-01-13 20:31           ` Keith Busch
2020-01-14 16:04             ` Max Gurtovoy
2020-01-12  9:40         ` Max Gurtovoy
2020-01-06 13:37 ` [PATCH 02/15] nvme: Enforce extended LBA format for fabrics metadata Max Gurtovoy
2020-01-16 23:53   ` James Smart
2020-01-19 11:20     ` Max Gurtovoy
2020-01-21 17:40       ` James Smart
2020-01-06 13:37 ` [PATCH 03/15] nvme: Introduce max_integrity_segments ctrl attribute Max Gurtovoy
2020-01-09  3:12   ` Martin K. Petersen
2020-01-06 13:37 ` [PATCH 04/15] nvme-fabrics: Allow user enabling metadata/T10-PI support Max Gurtovoy
2020-01-06 13:37 ` [PATCH 05/15] nvme: Introduce NVME_INLINE_PROT_SG_CNT Max Gurtovoy
2020-01-09  3:13   ` Martin K. Petersen
2020-01-06 13:37 ` [PATCH 06/15] nvme-rdma: Introduce nvme_rdma_sgl structure Max Gurtovoy
2020-01-06 13:37 ` [PATCH 07/15] nvme-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-01-06 13:37 ` [PATCH 08/15] nvmet: Prepare metadata request Max Gurtovoy
2020-01-06 13:37 ` [PATCH 09/15] nvmet: Add metadata characteristics for a namespace Max Gurtovoy
2020-01-09  3:16   ` Martin K. Petersen
2020-01-06 13:37 ` [PATCH 10/15] nvmet: Rename nvmet_rw_len to nvmet_rw_data_len Max Gurtovoy
2020-01-09  3:17   ` Martin K. Petersen
2020-01-06 13:37 ` [PATCH 11/15] nvmet: Rename nvmet_check_data_len to nvmet_check_transfer_len Max Gurtovoy
2020-01-09  3:19   ` Martin K. Petersen
2020-01-06 13:37 ` [PATCH 12/15] nvme: Add Metadata Capabilities enumerations Max Gurtovoy
2020-01-06 13:37 ` [PATCH 13/15] nvmet: Add metadata/T10-PI support Max Gurtovoy
2020-01-09  3:24   ` Martin K. Petersen
2020-01-27 17:17     ` Max Gurtovoy
2020-01-29  2:32       ` Martin K. Petersen
2020-01-17 16:46   ` James Smart
2020-01-19 13:47     ` Max Gurtovoy
2020-01-06 13:37 ` [PATCH 14/15] nvmet: Add metadata support for block devices Max Gurtovoy
2020-01-06 13:37 ` [PATCH 15/15] nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-01-09  3:29   ` Martin K. Petersen
2020-04-28 13:11 [PATCH 00/15 V6] nvme-rdma/nvmet-rdma: " Max Gurtovoy
2020-04-28 13:11 ` [PATCH 01/15] nvme: introduce namespace features flag Max Gurtovoy
2020-05-01 13:20   ` Christoph Hellwig
2020-05-01 14:24   ` Christoph Hellwig
2020-05-01 14:33     ` Max Gurtovoy

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=a243f1cb-3564-d839-7a5c-44c19409ce79@mellanox.com \
    --to=maxg@mellanox.com \
    --cc=axboe@kernel.dk \
    --cc=hch@lst.de \
    --cc=idanb@mellanox.com \
    --cc=israelr@mellanox.com \
    --cc=kbusch@kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=martin.petersen@oracle.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.