From: Max Gurtovoy <maxg@mellanox.com>
To: 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, shlomin@mellanox.com,
israelr@mellanox.com, idanb@mellanox.com, oren@mellanox.com,
nitzanc@mellanox.com
Subject: [PATCH 00/16 v7] nvme-rdma/nvmet-rdma: Add metadata/T10-PI support
Date: Mon, 4 May 2020 18:57:39 +0300 [thread overview]
Message-ID: <20200504155755.221125-1-maxg@mellanox.com> (raw)
Hello Sagi, Christoph, Keith, Martin, Jens, James and Co
This patchset adds metadata (T10-PI) support for NVMeoF/RDMA host side
and target side, using signature verbs API. This set starts with a few
preparation commits to the the block layer and NVMe host core layer. It
continues with NVMeoF/RDMA host implementation and preparations to NVMe
target core layer. The patchset ends with NVMeoF/RDMA target
implementation.
In V7 I mainly did some refactoring to NVMe/RDMA drivers for host and
target sides according to Christoph's suggestions. As agreed, for the
initial mode, we'll use T10-PI/metadata for capable devices and act
according to target controller and namespaces configuration.
Configuration:
Host:
- same as before
Target:
- echo 1 > /config/nvmet/subsystems/${NAME}/attr_pi_enable
- echo 1 > /config/nvmet/ports/${PORT_NUM}/param_pi_enable
The code was tested using Mellanox's ConnectX-4/ConnectX-5 HCAs.
This series applies on top of nvme_5.8 branch cleanly.
Changes from v6:
- added preparation patch for genhd.h
- added "Reviewed-by" (Christoph) to patches 2, 3, 4, 6, 10, 13
- refactor nvme-rdma/nvmet-rdma code according to Christoph suggestions
- rename md to metadata to make code more readable
Changes from v5:
- rebased over nvme_5.8
- configure RDMA controllers for T10-PI by default (if capable)
- removed RW api patch for exporting single MR length (will add it in the future if needed)
- Implemented Christoph's suggestions for NVMe host core
Changes from v4:
- removed get_mdts patches (merged)
- added enum nvme_ns_features instead of defines (patch 1/17)
- rename pi/prot to md (patches 2/17 + 6/17 + 8/17 + 9/17 + 10/17)
- another rebase
Changes from v3:
- Added Reviewed-by signatures
- New RDMA/rw patch (Patch 17/19)
- Add mdts setting op for controllers (Patches 14/19, 18/19)
- Rename NVME_NS_DIX_SUPPORTED to NVME_NS_MD_HOST_SUPPORTED and
NVME_NS_DIF_SUPPORTED to NVME_NS_MD_CTRL_SUPPORTED (Patch 01/19)
- Split "nvme: Introduce namespace features flag" patch (patch 02/19)
- Rename nvmet_rdma_set_diff_domain to nvmet_rdma_set_sig_domain
and nvme_rdma_set_diff_domain to nvme_rdma_set_sig_domain
(Patches 08/19, 19/19)
- Remove ns parameter from nvme_rdma_set_sig_domain/nvmet_rdma_set_sig_domain
functions (patch 08/19, 19/19)
- Rebase over nvme-5.7 branch
Changes from v2:
- Convert the virtual start sector (which passed to bip_set_seed function)
to be in integrity interval units (Patch 14/15)
- Clarify some commit messages
Changes from v1:
- Added Reviewed-by signatures
- Added namespace features flag (Patch 01/15)
- Remove nvme_ns_has_pi function (Patch 01/15)
- Added has_pi field to struct nvme_request (Patch 01/15)
- Subject change for patch 02/15
- Fix comment for PCI metadata (Patch 03/15)
- Rebase over "nvme: Avoid preallocating big SGL for data" patchset
- Introduce NVME_INLINE_PROT_SG_CNT flag (Patch 05/15)
- Introduce nvme_rdma_sgl structure (Patch 06/15)
- Remove first_sgl pointer from struct nvme_rdma_request (Patch 06/15)
- Split nvme-rdma patches (Patches 06/15, 07/15)
- Rename is_protected to use_pi (Patch 07/15)
- Refactor nvme_rdma_get_max_fr_pages function (Patch 07/15)
- Added ifdef CONFIG_BLK_DEV_INTEGRITY (Patches 07/15, 09/15, 13/15,
14/15, 15/15)
- Added port configfs pi_enable (Patch 14/15)
Israel Rukshin (9):
nvme: introduce NVME_INLINE_METADATA_SG_CNT
nvme-rdma: introduce nvme_rdma_sgl structure
nvmet: add metadata characteristics for a namespace
nvmet: rename nvmet_rw_len to nvmet_rw_data_len
nvmet: rename nvmet_check_data_len to nvmet_check_transfer_len
nvme: add Metadata Capabilities enumerations
nvmet: add metadata/T10-PI support
nvmet: add metadata support for block devices
nvmet-rdma: add metadata/T10-PI support
James Smart (1):
nvme: make nvme_ns_has_pi accessible to transports
Max Gurtovoy (6):
block: always define struct blk_integrity in genhd.h
nvme: introduce namespace features flag
nvme: introduce NVME_NS_METADATA_SUPPORTED flag
nvme: introduce max_integrity_segments ctrl attribute
nvme: enforce extended LBA format for fabrics metadata
nvme-rdma: add metadata/T10-PI support
drivers/nvme/host/core.c | 83 +++++++---
drivers/nvme/host/lightnvm.c | 5 +-
drivers/nvme/host/nvme.h | 17 ++-
drivers/nvme/host/pci.c | 6 +
drivers/nvme/host/rdma.c | 313 ++++++++++++++++++++++++++++++++++----
drivers/nvme/target/admin-cmd.c | 40 +++--
drivers/nvme/target/configfs.c | 58 +++++++
drivers/nvme/target/core.c | 122 +++++++++++----
drivers/nvme/target/discovery.c | 8 +-
drivers/nvme/target/fabrics-cmd.c | 15 +-
drivers/nvme/target/io-cmd-bdev.c | 113 +++++++++++++-
drivers/nvme/target/io-cmd-file.c | 6 +-
drivers/nvme/target/nvmet.h | 33 +++-
drivers/nvme/target/rdma.c | 231 +++++++++++++++++++++++++---
include/linux/genhd.h | 4 -
include/linux/nvme.h | 6 +
16 files changed, 919 insertions(+), 141 deletions(-)
--
1.8.3.1
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next reply other threads:[~2020-05-04 15:59 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-04 15:57 Max Gurtovoy [this message]
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
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
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=20200504155755.221125-1-maxg@mellanox.com \
--to=maxg@mellanox.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=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).