Corrections from Keith Busch review comments.
Signed-off-by: Tony Asleson <redacted>
---
drivers/nvme/host/core.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index f3c037f5a9ba..f2e5b91668a1 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -2667,6 +2667,22 @@ static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
return true;
}
+static ssize_t wwid_show(struct device *dev, struct device_attribute *attr,
+ char *buf);
+
+static int dev_to_nvme_durable_name(const struct device *dev, char *buf, size_t len)
+{
+ char serial[144]; /* Max 141 for wwid_show */
+ ssize_t serial_len = wwid_show((struct device *)dev, NULL, serial);
+
+ if (serial_len > 0 && serial_len < len) {
+ serial_len -= 1; /* Remove the '\n' from the string */
+ strncpy(buf, serial, serial_len);
+ return serial_len;
+ }
+ return 0;
+}
+
static int nvme_init_subsystem(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id)
{
struct nvme_subsystem *subsys, *found;@@ -3616,6 +3632,8 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
disk->queue = ns->queue;
disk->flags = flags;
memcpy(disk->disk_name, disk_name, DISK_NAME_LEN);
+ disk_to_dev(disk)->durable_name = dev_to_nvme_durable_name;
+
ns->disk = disk;
__nvme_revalidate_disk(disk, id);
--
2.25.4