summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDon Brady <[email protected]>2018-03-29 18:43:25 -0600
committerBrian Behlendorf <[email protected]>2018-03-29 17:43:25 -0700
commit99f505a4d743976d8879595d20beb66a6cbc3af1 (patch)
treeedbfab3eb0f900e96c18c2c6441d561a79f2d6d0 /lib
parent32dce2da0c0d30321ccbddcfcb3f3238cd96f744 (diff)
Add support for nvme based devids
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 <[email protected]> Reviewed-by: Richard Elling <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Don Brady <[email protected]> Closes #7356
Diffstat (limited to 'lib')
-rw-r--r--lib/libzfs/libzfs_import.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/libzfs/libzfs_import.c b/lib/libzfs/libzfs_import.c
index 435d91fb8..67bf9b0be 100644
--- a/lib/libzfs/libzfs_import.c
+++ b/lib/libzfs/libzfs_import.c
@@ -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);
}
/*