From: Jeff Mahoney <je...@suse.com> sysfs_partition_path calls udevadm to resolve the sysfs path for a block device. That can be accomplished by stating the device node and using the major/minor to follow the symlinks in /sys/dev/block/.
This cuts the execution time of grub2-mkconfig from 10s to 2s on my system. Signed-off-by: Jeff Mahoney <je...@suse.com> [ pvorel: include grub/osdep/major.h ] Signed-off-by: Petr Vorel <pvo...@suse.cz> --- grub-core/osdep/linux/hostdisk.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/grub-core/osdep/linux/hostdisk.c b/grub-core/osdep/linux/hostdisk.c index da62f924e..43dc4b0ba 100644 --- a/grub-core/osdep/linux/hostdisk.c +++ b/grub-core/osdep/linux/hostdisk.c @@ -31,6 +31,7 @@ #include <grub/misc.h> #include <grub/i18n.h> #include <grub/list.h> +#include <grub/osdep/major.h> #include <stdio.h> #include <stdlib.h> @@ -105,6 +106,13 @@ sysfs_partition_path (const char *dev, const char *entry) char *buf = NULL; size_t len = 0; char *path = NULL; + struct stat st; + int ret; + + ret = stat(dev, &st); + if (ret == 0 && S_ISBLK(st.st_mode)) + return xasprintf ("/sys/dev/block/%u:%u/%s", + major (st.st_rdev), minor (st.st_rdev), entry); argv[0] = "udevadm"; argv[1] = "info"; -- 2.32.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel