Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a665d2f authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Sagi Grimberg
Browse files

nvme-fabrics: change NQN UUID to big-endian format



NVM Express 1.2.1 section 7.9, NVMe Qualified Names, specifies that the
UUID format of NQN uses a UUID based on RFC 4122.

RFC 4122 specifies that the UUID is encoded in big-endian byte order.

Switch the NVMe over Fabrics host ID field from little-endian UUID to
big-endian UUID to match the specification.

Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJay Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
parent eadb7cf4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ static struct nvmf_host *nvmf_host_add(const char *hostnqn)

	kref_init(&host->ref);
	memcpy(host->nqn, hostnqn, NVMF_NQN_SIZE);
	uuid_le_gen(&host->id);
	uuid_be_gen(&host->id);

	list_add_tail(&host->list, &nvmf_hosts);
out_unlock:
@@ -73,9 +73,9 @@ static struct nvmf_host *nvmf_host_default(void)
		return NULL;

	kref_init(&host->ref);
	uuid_le_gen(&host->id);
	uuid_be_gen(&host->id);
	snprintf(host->nqn, NVMF_NQN_SIZE,
		"nqn.2014-08.org.nvmexpress:NVMf:uuid:%pUl", &host->id);
		"nqn.2014-08.org.nvmexpress:NVMf:uuid:%pUb", &host->id);

	mutex_lock(&nvmf_hosts_mutex);
	list_add_tail(&host->list, &nvmf_hosts);
@@ -382,7 +382,7 @@ int nvmf_connect_admin_queue(struct nvme_ctrl *ctrl)
	if (!data)
		return -ENOMEM;

	memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_le));
	memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_be));
	data->cntlid = cpu_to_le16(0xffff);
	strncpy(data->subsysnqn, ctrl->opts->subsysnqn, NVMF_NQN_SIZE);
	strncpy(data->hostnqn, ctrl->opts->host->nqn, NVMF_NQN_SIZE);
@@ -441,7 +441,7 @@ int nvmf_connect_io_queue(struct nvme_ctrl *ctrl, u16 qid)
	if (!data)
		return -ENOMEM;

	memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_le));
	memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_be));
	data->cntlid = cpu_to_le16(ctrl->cntlid);
	strncpy(data->subsysnqn, ctrl->opts->subsysnqn, NVMF_NQN_SIZE);
	strncpy(data->hostnqn, ctrl->opts->host->nqn, NVMF_NQN_SIZE);
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ struct nvmf_host {
	struct kref		ref;
	struct list_head	list;
	char			nqn[NVMF_NQN_SIZE];
	uuid_le			id;
	uuid_be			id;
};

/**
+1 −1
Original line number Diff line number Diff line
@@ -794,7 +794,7 @@ struct nvmf_connect_command {
};

struct nvmf_connect_data {
	uuid_le		hostid;
	uuid_be		hostid;
	__le16		cntlid;
	char		resv4[238];
	char		subsysnqn[NVMF_NQN_FIELD_LEN];