[dm-devel] [PATCH v2 20/20] libmultipath/foreign/nvme: fix ouput for "%n" wildcard

Martin Wilck mwilck at suse.com
Sun Dec 23 22:21:26 UTC 2018


The output for "%n" ("name") is broken: it omits the NSID,
and thus it isn't unique per namespace; and it duplicates the
NQN. Change the format to "$NQN:nsid.$NSID".

Real-world example:
nqn.1992-08.com.netapp:sn.7c6b997ca1f611e8abb200a09890f5bf:subsystem.netapp-nvme-svm-subsystem:nsid.1

Signed-off-by: Martin Wilck <mwilck at suse.com>
---
 libmultipath/foreign/nvme.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libmultipath/foreign/nvme.c b/libmultipath/foreign/nvme.c
index 838e450e..f0e82937 100644
--- a/libmultipath/foreign/nvme.c
+++ b/libmultipath/foreign/nvme.c
@@ -148,10 +148,11 @@ static int snprint_nvme_map(const struct gen_multipath *gmp,
 		return snprintf(buff, len, "%s",
 				udev_device_get_sysname(nvm->udev));
 	case 'n':
-		return snprintf(buff, len, "%s:NQN:%s",
-				udev_device_get_sysname(nvm->subsys),
+		return snprintf(buff, len, "%s:nsid.%s",
 				udev_device_get_sysattr_value(nvm->subsys,
-							      "subsysnqn"));
+							      "subsysnqn"),
+				udev_device_get_sysattr_value(nvm->udev,
+							      "nsid"));
 	case 'w':
 		return snprintf(buff, len, "%s",
 				udev_device_get_sysattr_value(nvm->udev,
-- 
2.19.2




More information about the dm-devel mailing list