OSDN Git Service

Check for the NVMe EUI in the base sysfs dir for the device as well
authorPeter Jones <pjones@redhat.com>
Mon, 17 Oct 2016 14:04:48 +0000 (10:04 -0400)
committerPeter Jones <pjones@redhat.com>
Mon, 17 Oct 2016 14:25:51 +0000 (10:25 -0400)
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

index 30b5cd0..b995887 100644 (file)
@@ -363,8 +363,13 @@ 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) {
                uint8_t eui[8];
                if (rc < 23) {