On Wed, Jun 28, 2023 at 08:25:24AM +0000, Shinichiro Kawasaki wrote: > 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.