Thread (26 messages) 26 messages, 6 authors, 2023-07-05

Re: [bug report] most of blktests nvme/ failed on the latest linux tree

From: Daniel Wagner <hidden>
Date: 2023-06-29 07:41:33
Also in: linux-nvme

On Wed, Jun 28, 2023 at 08:25:24AM +0000, Shinichiro Kawasaki wrote:
quoted hunk ↗ jump to hunk
I looked in nvme-cli code. When it generates hostnqn, it does not set hostid.
A quick dirty patch below for nvme-cli avoided the failures for nvme_trtype=loop
condition. If this is the fix approach, the kernel commit will need
corresponding change in the nvme-cli side.

diff --git a/fabrics.c b/fabrics.c
index ac240cad..f1981206 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -753,8 +753,13 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
 	hostid_arg = hostid;
 	if (!hostnqn)
 		hostnqn = hnqn = nvmf_hostnqn_from_file();
-	if (!hostnqn)
+	if (!hostnqn) {
+		char *uuid;
 		hostnqn = hnqn = nvmf_hostnqn_generate();
+		uuid = strstr(hostnqn, "uuid:");
+		if (uuid)
+			hostid = hid = strdup(uuid + strlen("uuid:"));
+	}
 	if (!hostid)
 		hostid = hid = nvmf_hostid_from_file();
 	h = nvme_lookup_host(r, hostnqn, hostid);
@@ -966,8 +971,13 @@ int nvmf_connect(const char *desc, int argc, char **argv)
 
 	if (!hostnqn)
 		hostnqn = hnqn = nvmf_hostnqn_from_file();
-	if (!hostnqn)
+	if (!hostnqn) {
+		char *uuid;
 		hostnqn = hnqn = nvmf_hostnqn_generate();
+		uuid = strstr(hostnqn, "uuid:");
+		if (uuid)
+			hostid = hid = strdup(uuid + strlen("uuid:"));
+	}
 	if (!hostid)
 		hostid = hid = nvmf_hostid_from_file();
 	h = nvme_lookup_host(r, hostnqn, hostid);
Looks reasonable. Though I would propably also add a warning iff
nvmf_hostid_from_file() does return a not matching hostid.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help