Blame SOURCES/0008-nvme-cli-nvme-gen-hostnqn-use-partition-UUID-on-IBM-.patch

8aa0ec
From db50dbf5692325cfef8fb77e56e1e44af83a022e Mon Sep 17 00:00:00 2001
8aa0ec
From: Maurizio Lombardi <mlombard@redhat.com>
8aa0ec
Date: Wed, 29 Jun 2022 16:47:30 +0200
8aa0ec
Subject: [PATCH 1/7] nvme-cli: nvme gen-hostnqn use partition UUID on IBM
8aa0ec
 POWER
8aa0ec
8aa0ec
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
8aa0ec
---
8aa0ec
 nvme.c | 27 +++++++++++++++++++++++++--
8aa0ec
 1 file changed, 25 insertions(+), 2 deletions(-)
8aa0ec
8aa0ec
diff --git a/nvme.c b/nvme.c
8aa0ec
index 5beeac78..0535ed2b 100644
8aa0ec
--- a/nvme.c
8aa0ec
+++ b/nvme.c
8aa0ec
@@ -6516,6 +6516,26 @@ static int admin_passthru(int argc, char **argv, struct command *cmd, struct plu
8aa0ec
 	return passthru(argc, argv, NVME_IOCTL_ADMIN_CMD, 1, desc, cmd);
8aa0ec
 }
8aa0ec
 
8aa0ec
+#define PATH_UUID_IBM	"/proc/device-tree/ibm,partition-uuid"
8aa0ec
+
8aa0ec
+static int uuid_from_device_tree(char *system_uuid)
8aa0ec
+{
8aa0ec
+	ssize_t len;
8aa0ec
+	int f;
8aa0ec
+
8aa0ec
+	f = open(PATH_UUID_IBM, O_RDONLY);
8aa0ec
+	if (f < 0)
8aa0ec
+		return -ENXIO;
8aa0ec
+
8aa0ec
+	memset(system_uuid, 0, 37);
8aa0ec
+	len = read(f, system_uuid, 37 - 1);
8aa0ec
+	close(f);
8aa0ec
+	if (len < 0)
8aa0ec
+		return -ENXIO;
8aa0ec
+
8aa0ec
+	return strlen(system_uuid) ? 0 : -ENXIO;
8aa0ec
+}
8aa0ec
+
8aa0ec
 static int gen_hostnqn_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
8aa0ec
 {
8aa0ec
 	int ret;
8aa0ec
@@ -6525,8 +6545,11 @@ static int gen_hostnqn_cmd(int argc, char **argv, struct command *command, struc
8aa0ec
 #endif
8aa0ec
 
8aa0ec
 	ret = uuid_from_dmi(uuid_str);
8aa0ec
-	if (ret < 0)
8aa0ec
-		ret = uuid_from_systemd(uuid_str);
8aa0ec
+	if (ret < 0) {
8aa0ec
+		ret = uuid_from_device_tree(uuid_str);
8aa0ec
+		if (ret < 0)
8aa0ec
+			ret = uuid_from_systemd(uuid_str);
8aa0ec
+	}
8aa0ec
 #ifdef LIBUUID
8aa0ec
 	if (ret < 0) {
8aa0ec
 		uuid_generate_random(uuid);
8aa0ec
-- 
8aa0ec
2.31.1
8aa0ec