From: James Smart <james.smart@broadcom.com>
To: Max Gurtovoy <maxg@mellanox.com>,
linux-nvme@lists.infradead.org, kbusch@kernel.org, hch@lst.de,
sagi@grimberg.me, martin.petersen@oracle.com,
jsmart2021@gmail.com, axboe@kernel.dk
Cc: vladimirk@mellanox.com, idanb@mellanox.com, israelr@mellanox.com,
shlomin@mellanox.com, oren@mellanox.com, nitzanc@mellanox.com
Subject: Re: [PATCH 10/16] nvmet: add metadata characteristics for a namespace
Date: Wed, 13 May 2020 12:25:02 -0700 [thread overview]
Message-ID: <65a7ec19-425f-f3ad-191c-333eac46a81b@broadcom.com> (raw)
In-Reply-To: <20200504155755.221125-11-maxg@mellanox.com>
On 5/4/2020 8:57 AM, Max Gurtovoy wrote:
> From: Israel Rukshin <israelr@mellanox.com>
>
> Fill those namespace fields from the block device format for adding
> metadata (T10-PI) over fabric support with block devices.
>
> Signed-off-by: Israel Rukshin <israelr@mellanox.com>
> Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/nvme/target/io-cmd-bdev.c | 22 ++++++++++++++++++++++
> drivers/nvme/target/nvmet.h | 3 +++
> 2 files changed, 25 insertions(+)
>
> diff --git a/drivers/nvme/target/io-cmd-bdev.c b/drivers/nvme/target/io-cmd-bdev.c
> index 0427e04..45dc644 100644
> --- a/drivers/nvme/target/io-cmd-bdev.c
> +++ b/drivers/nvme/target/io-cmd-bdev.c
> @@ -47,6 +47,22 @@ void nvmet_bdev_set_limits(struct block_device *bdev, struct nvme_id_ns *id)
> id->nows = to0based(ql->io_opt / ql->logical_block_size);
> }
>
> +static void nvmet_bdev_ns_enable_integrity(struct nvmet_ns *ns)
> +{
> + struct blk_integrity *bi = bdev_get_integrity(ns->bdev);
> +
> + if (bi) {
> + ns->metadata_size = bi->tuple_size;
> + if (bi->profile == &t10_pi_type1_crc)
> + ns->pi_type = NVME_NS_DPS_PI_TYPE1;
> + else if (bi->profile == &t10_pi_type3_crc)
> + ns->pi_type = NVME_NS_DPS_PI_TYPE3;
> + else
> + /* Unsupported metadata type */
> + ns->metadata_size = 0;
> + }
> +}
> +
> int nvmet_bdev_ns_enable(struct nvmet_ns *ns)
> {
> int ret;
> @@ -64,6 +80,12 @@ int nvmet_bdev_ns_enable(struct nvmet_ns *ns)
> }
> ns->size = i_size_read(ns->bdev->bd_inode);
> ns->blksize_shift = blksize_bits(bdev_logical_block_size(ns->bdev));
> +
> + ns->pi_type = 0;
> + ns->metadata_size = 0;
> + if (IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY))
> + nvmet_bdev_ns_enable_integrity(ns);
> +
Ok. In the future we will want to consider a case of a transport
stripping/inserting PI data, even if not implemented by the controller's
bdev. Although it only checks fabric transmission, it's better than 0
checking.
I assume, all bdevs that support an integrity profile will report a
blocksize that does not contain the integrity data ?
And we're going to fail as badly now as before if the bdev didn't have a
power-of-2 blocksize, or supported metadata (a blk-integrity buffer) and
metadata_size isn't set ?
-- james
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2020-05-13 19:25 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-04 15:57 [PATCH 00/16 v7] nvme-rdma/nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2020-05-04 15:57 ` [PATCH 01/16] block: always define struct blk_integrity in genhd.h Max Gurtovoy
2020-05-14 2:51 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 02/16] nvme: introduce namespace features flag Max Gurtovoy
2020-05-04 23:59 ` James Smart
2020-05-14 2:52 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 03/16] nvme: introduce NVME_NS_METADATA_SUPPORTED flag Max Gurtovoy
2020-05-05 23:33 ` James Smart
2020-05-06 8:39 ` Max Gurtovoy
2020-05-06 20:44 ` James Smart
2020-05-07 9:02 ` Max Gurtovoy
2020-05-11 23:50 ` James Smart
2020-05-13 18:18 ` Christoph Hellwig
2020-05-13 19:53 ` James Smart
2020-05-14 2:53 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 04/16] nvme: make nvme_ns_has_pi accessible to transports Max Gurtovoy
2020-05-14 2:53 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 05/16] nvme: introduce max_integrity_segments ctrl attribute Max Gurtovoy
2020-05-05 23:51 ` James Smart
2020-05-06 7:08 ` Christoph Hellwig
2020-05-13 19:04 ` James Smart
2020-05-04 15:57 ` [PATCH 06/16] nvme: enforce extended LBA format for fabrics metadata Max Gurtovoy
2020-05-13 19:03 ` James Smart
2020-05-14 2:56 ` Martin K. Petersen
2020-05-14 8:28 ` Max Gurtovoy
2020-05-14 8:15 ` Max Gurtovoy
2020-05-04 15:57 ` [PATCH 07/16] nvme: introduce NVME_INLINE_METADATA_SG_CNT Max Gurtovoy
2020-05-13 19:05 ` James Smart
2020-05-04 15:57 ` [PATCH 08/16] nvme-rdma: introduce nvme_rdma_sgl structure Max Gurtovoy
2020-05-04 15:57 ` [PATCH 09/16] nvme-rdma: add metadata/T10-PI support Max Gurtovoy
2020-05-05 6:12 ` Christoph Hellwig
2020-05-14 3:02 ` Martin K. Petersen
2020-05-14 8:48 ` Max Gurtovoy
2020-05-14 22:40 ` Martin K. Petersen
2020-05-15 14:50 ` Max Gurtovoy
2020-05-18 17:22 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 10/16] nvmet: add metadata characteristics for a namespace Max Gurtovoy
2020-05-13 19:25 ` James Smart [this message]
2020-05-14 3:06 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 11/16] nvmet: rename nvmet_rw_len to nvmet_rw_data_len Max Gurtovoy
2020-05-13 19:25 ` James Smart
2020-05-04 15:57 ` [PATCH 12/16] nvmet: rename nvmet_check_data_len to nvmet_check_transfer_len Max Gurtovoy
2020-05-13 19:27 ` James Smart
2020-05-04 15:57 ` [PATCH 13/16] nvme: add Metadata Capabilities enumerations Max Gurtovoy
2020-05-13 19:27 ` James Smart
2020-05-14 3:07 ` Martin K. Petersen
2020-05-04 15:57 ` [PATCH 14/16] nvmet: add metadata/T10-PI support Max Gurtovoy
2020-05-13 19:51 ` James Smart
2020-05-14 15:09 ` Max Gurtovoy
2020-05-14 15:37 ` James Smart
2020-05-04 15:57 ` [PATCH 15/16] nvmet: add metadata support for block devices Max Gurtovoy
2020-05-04 15:57 ` [PATCH 16/16] nvmet-rdma: add metadata/T10-PI support Max Gurtovoy
2020-05-14 3:10 ` Martin K. Petersen
2020-05-14 8:55 ` Max Gurtovoy
2020-05-05 6:13 ` [PATCH 00/16 v7] nvme-rdma/nvmet-rdma: Add " Christoph Hellwig
2020-05-14 15:55 ` Max Gurtovoy
-- strict thread matches above, loose matches on Subject: below --
2020-05-19 14:05 [PATCH 00/16 v8] " Max Gurtovoy
2020-05-19 14:05 ` [PATCH 10/16] nvmet: add metadata characteristics for a namespace Max Gurtovoy
2019-12-02 14:47 [PATCH 00/16 V2] nvme-rdma/nvmet-rdma: Add metadata/T10-PI support Max Gurtovoy
2019-12-02 14:48 ` [PATCH 10/16] nvmet: Add metadata characteristics for a namespace 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=65a7ec19-425f-f3ad-191c-333eac46a81b@broadcom.com \
--to=james.smart@broadcom.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=idanb@mellanox.com \
--cc=israelr@mellanox.com \
--cc=jsmart2021@gmail.com \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=martin.petersen@oracle.com \
--cc=maxg@mellanox.com \
--cc=nitzanc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).