From 03ac99d13f5c078ff53fc4242459e191e9241ea7 Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Fri, 2 Jul 2021 08:24:11 -0400 Subject: [PATCH] nvmf: set NGUID for given namespace based on bdev UUID If NGUID is not specified with nvmf_subsystem_add_ns json-rpc request then it is possible to expose the same NGUID as bdev nvme module attached. Signed-off-by: Jacek Kalwas Change-Id: Ie0ed7189e55a5abd6bc0904fc356d26f62b50549 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8628 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- lib/nvmf/subsystem.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 1da2a278b..d6fbd75bd 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -1460,6 +1460,12 @@ spdk_nvmf_subsystem_add_ns_ext(struct spdk_nvmf_subsystem *subsystem, const char opts.uuid = *spdk_bdev_get_uuid(ns->bdev); } + /* if nguid descriptor is supported by bdev module (nvme) then uuid = nguid */ + if (spdk_mem_all_zero(opts.nguid, sizeof(opts.nguid))) { + SPDK_STATIC_ASSERT(sizeof(opts.nguid) == sizeof(opts.uuid), "size mismatch"); + memcpy(opts.nguid, spdk_bdev_get_uuid(ns->bdev), sizeof(opts.nguid)); + } + ns->opts = opts; ns->subsystem = subsystem; subsystem->ns[opts.nsid - 1] = ns;