From 397f179c26aeddf3fe452c62aa404459889835fc Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Tue, 18 Feb 2014 11:34:00 -0500 Subject: [PATCH] Fix convert function to support NVMe devices This is adapted from the patch at https://bugzilla.redhat.com/show_bug.cgi?id=1019660 , which is against the now very old version of convert_system_partition_to_system_disk(). As such, it certainly not the right thing for upstream, but should function for now. Resolves: rhbz#1019660 Signed-off-by: Peter Jones --- util/getroot.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/util/getroot.c b/util/getroot.c index 847406fbab0..fa3460d6cd8 100644 --- a/util/getroot.c +++ b/util/getroot.c @@ -153,6 +153,7 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part) { #if GRUB_UTIL_FD_STAT_IS_FUNCTIONAL struct stat st; + char *path = xmalloc(PATH_MAX); if (stat (os_dev, &st) < 0) { @@ -165,6 +166,24 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part) *is_part = 0; + if (realpath(os_dev, path)) + { + if ((strncmp ("/dev/nvme", path, 9) == 0)) + { + char *p = path + 5; + p = strchr(p, 'p'); + if (p) + { + *is_part = 1; + *p = '\0'; + } + return path; + } + } + + grub_free (path); + *is_part = 0; + if (grub_util_device_is_mapped_stat (&st)) return grub_util_devmapper_part_to_disk (&st, is_part, os_dev);