diff mbox series

nfs/blocklayout: add support for NVMe

Message ID 20240705165141.2248305-1-hch@lst.de (mailing list archive)
State New
Headers show
Series nfs/blocklayout: add support for NVMe | expand

Commit Message

Christoph Hellwig July 5, 2024, 4:51 p.m. UTC
Look for the udev generated persistent device name for NVMe devices
in addition to the SCSI ones and the Redhat-specific device mapper
name.

This is the client side implementation of RFC 9561 "Using the Parallel
NFS (pNFS) SCSI Layout to Access Non-Volatile Memory Express (NVMe)
Storage Devices".

Note that the udev rules for nvme are a bit of a mess and udev will only
create a link for the uuid if the NVMe namespace has one, and not the
NGUID.  As the current RFCs don't support UUID based identifications this
means the layout can't be used on such namespaces out of the box.  A
small tweak to the udev rules can work around it, and as the real fix I
will submit a draft to the IETF NFSv4 working group to support UUID-based
identifiers for SCSI and NVMe.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/nfs/blocklayout/dev.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Sagi Grimberg July 6, 2024, 9:40 p.m. UTC | #1
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Benjamin Coddington July 11, 2024, 2:04 p.m. UTC | #2
On 5 Jul 2024, at 12:51, Christoph Hellwig wrote:

> Look for the udev generated persistent device name for NVMe devices
> in addition to the SCSI ones and the Redhat-specific device mapper
> name.
>
> This is the client side implementation of RFC 9561 "Using the Parallel
> NFS (pNFS) SCSI Layout to Access Non-Volatile Memory Express (NVMe)
> Storage Devices".
>
> Note that the udev rules for nvme are a bit of a mess and udev will only
> create a link for the uuid if the NVMe namespace has one, and not the
> NGUID.  As the current RFCs don't support UUID based identifications this
> means the layout can't be used on such namespaces out of the box.  A
> small tweak to the udev rules can work around it, and as the real fix I
> will submit a draft to the IETF NFSv4 working group to support UUID-based
> identifiers for SCSI and NVMe.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Woot!

Reviewed-by: Benjamin Coddington <bcodding@redhat.com>A

Ben
diff mbox series

Patch

diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c
index 221781fb9cf14b..6252f44479457b 100644
--- a/fs/nfs/blocklayout/dev.c
+++ b/fs/nfs/blocklayout/dev.c
@@ -404,6 +404,8 @@  bl_parse_scsi(struct nfs_server *server, struct pnfs_block_dev *d,
 	bdev_file = bl_open_path(v, "dm-uuid-mpath-0x");
 	if (IS_ERR(bdev_file))
 		bdev_file = bl_open_path(v, "wwn-0x");
+	if (IS_ERR(bdev_file))
+		bdev_file = bl_open_path(v, "nvme-eui.");
 	if (IS_ERR(bdev_file)) {
 		pr_warn("pNFS: no device found for volume %*phN\n",
 			v->scsi.designator_len, v->scsi.designator);