]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Add support for nvme based devids
authorDon Brady <don.brady@delphix.com>
Fri, 30 Mar 2018 00:43:25 +0000 (18:43 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 30 Mar 2018 00:43:25 +0000 (17:43 -0700)
Adds a devid for nvme devices. This is very similar to how the
other 'bus' (scsi|sata|usb) devids are generated. The devid
resides in a name/value pair in the leaf vdevs in a zpool config.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Don Brady <don.brady@delphix.com>
Closes #7356

lib/libzfs/libzfs_import.c

index 435d91fb83e38a90b78790d7b05039b13f4636f0..67bf9b0be381a2b94ff4781ca14961e7768103bc 100644 (file)
@@ -21,7 +21,7 @@
 /*
  * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2016 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2018 by Delphix. All rights reserved.
  * Copyright 2015 RackTop Systems.
  * Copyright (c) 2016, Intel Corporation.
  */
@@ -144,7 +144,18 @@ zfs_device_get_devid(struct udev_device *dev, char *bufptr, size_t buflen)
                        (void) snprintf(bufptr, buflen, "dm-uuid-%s", dm_uuid);
                        return (0);
                }
-               return (ENODATA);
+
+               /*
+                * NVME 'by-id' symlinks are similar to bus case
+                */
+               struct udev_device *parent;
+
+               parent = udev_device_get_parent_with_subsystem_devtype(dev,
+                   "nvme", NULL);
+               if (parent != NULL)
+                       bus = "nvme";   /* continue with bus symlink search */
+               else
+                       return (ENODATA);
        }
 
        /*