efivar/0001-Check-for-the-NVMe-EUI-in-the-base-sysfs-dir-for-the.patch
Peter Jones cec7707901 Handle NVMe device attributes paths moving around in sysfs.
Signed-off-by: Peter Jones <pjones@redhat.com>
2016-10-17 10:22:13 -04:00

43 lines
1.2 KiB
Diff

From f9570dee464a879e908e6212518eca08ae138c8c Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 17 Oct 2016 10:04:48 -0400
Subject: [PATCH] Check for the NVMe EUI in the base sysfs dir for the device
as well
Kernel commit 779ff75617099f4defe14e20443b95019a4c5ae8 moves the NVMe
attributes from being under nvme0n1/device/* to just being in the
nvme0n1/ directory. So now we get to check for both things. Thanks,
sysfs.
This resolves github issue #65
This resolves https://github.com/rhinstaller/efibootmgr/issues/48
Signed-off-by: Peter Jones <pjones@redhat.com>
---
src/linux.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/linux.c b/src/linux.c
index 30b5cd0..dd59551 100644
--- a/src/linux.c
+++ b/src/linux.c
@@ -363,9 +363,14 @@ sysfs_parse_nvme(uint8_t *buf, ssize_t size, ssize_t *off,
* now fish the eui out of sysfs is there is one...
*/
rc = read_sysfs_file(&filebuf,
+ "/sys/class/block/nvme%dn%d/eui",
+ ctrl_id, ns_id);
+ if (rc < 0 && errno == ENOENT) {
+ rc = read_sysfs_file(&filebuf,
"/sys/class/block/nvme%dn%d/device/eui",
ctrl_id, ns_id);
- if (rc >= 0) {
+ }
+ if (rc >= 0)
uint8_t eui[8];
if (rc < 23) {
errno = EINVAL;
--
2.10.0