Hannes Reinecke 69bb98
From: Sagi Grimberg <sagi@grimberg.me>
Hannes Reinecke 69bb98
Date: Thu, 24 Oct 2019 09:55:58 -0700
Hannes Reinecke 69bb98
Subject: [PATCH] nvmet: fill discovery controller sn, fr and mn correctly
Hannes Reinecke 69bb98
Git-commit: d4b3a1741130dfc812b0825db4cb1c61032da183
Hannes Reinecke 69bb98
Patch-mainline: v5.5-rc1
Hannes Reinecke 69bb98
References: bsc#1169045
Hannes Reinecke 69bb98
Hannes Reinecke 69bb98
Discovery controllers need this information as well.
Hannes Reinecke 69bb98
Hannes Reinecke 69bb98
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Hannes Reinecke 69bb98
Signed-off-by: Keith Busch <kbusch@kernel.org>
Hannes Reinecke 69bb98
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Hannes Reinecke 69bb98
Acked-by: Hannes Reinecke <hare@suse.com>
Hannes Reinecke 69bb98
---
Hannes Reinecke 69bb98
 drivers/nvme/target/discovery.c | 8 +++++++-
Hannes Reinecke 69bb98
 1 file changed, 7 insertions(+), 1 deletion(-)
Hannes Reinecke 69bb98
Hannes Reinecke 69bb98
diff --git a/drivers/nvme/target/discovery.c b/drivers/nvme/target/discovery.c
Hannes Reinecke 69bb98
index 7a868c3e8e95..0c2274b21e15 100644
Hannes Reinecke 69bb98
--- a/drivers/nvme/target/discovery.c
Hannes Reinecke 69bb98
+++ b/drivers/nvme/target/discovery.c
Hannes Reinecke 69bb98
@@ -241,6 +241,7 @@ static void nvmet_execute_disc_identify(struct nvmet_req *req)
Hannes Reinecke 69bb98
 {
Hannes Reinecke 69bb98
 	struct nvmet_ctrl *ctrl = req->sq->ctrl;
Hannes Reinecke 69bb98
 	struct nvme_id_ctrl *id;
Hannes Reinecke 69bb98
+	const char model[] = "Linux";
Hannes Reinecke 69bb98
 	u16 status = 0;
Hannes Reinecke 69bb98
 
Hannes Reinecke 69bb98
 	if (!nvmet_check_data_len(req, NVME_IDENTIFY_DATA_SIZE))
Hannes Reinecke 69bb98
@@ -258,8 +259,13 @@ static void nvmet_execute_disc_identify(struct nvmet_req *req)
Hannes Reinecke 69bb98
 		goto out;
Hannes Reinecke 69bb98
 	}
Hannes Reinecke 69bb98
 
Hannes Reinecke 69bb98
+	memset(id->sn, ' ', sizeof(id->sn));
Hannes Reinecke 69bb98
+	bin2hex(id->sn, &ctrl->subsys->serial,
Hannes Reinecke 69bb98
+		min(sizeof(ctrl->subsys->serial), sizeof(id->sn) / 2));
Hannes Reinecke 69bb98
 	memset(id->fr, ' ', sizeof(id->fr));
Hannes Reinecke 69bb98
-	strncpy((char *)id->fr, UTS_RELEASE, sizeof(id->fr));
Hannes Reinecke 69bb98
+	memcpy_and_pad(id->mn, sizeof(id->mn), model, sizeof(model) - 1, ' ');
Hannes Reinecke 69bb98
+	memcpy_and_pad(id->fr, sizeof(id->fr),
Hannes Reinecke 69bb98
+		       UTS_RELEASE, strlen(UTS_RELEASE), ' ');
Hannes Reinecke 69bb98
 
Hannes Reinecke 69bb98
 	/* no limit on data transfer sizes for now */
Hannes Reinecke 69bb98
 	id->mdts = 0;
Hannes Reinecke 69bb98
-- 
Hannes Reinecke 69bb98
2.16.4
Hannes Reinecke 69bb98