Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2021-08-06 22:44:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Fri Aug 6 22:44:23 2021 rev:246 rq:910196 version:2.06 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2021-07-18 23:44:49.455103712 +0200 +++ /work/SRC/openSUSE:Factory/.grub2.new.1899/grub2.changes 2021-08-06 22:44:24.486110274 +0200 @@ -1,0 +2,9 @@ +Thu Jul 22 16:43:20 UTC 2021 - Petr Vorel <pvo...@suse.cz> + +- Replace grub2-use-stat-instead-of-udevadm-for-partition-lookup.patch and + fix-grub2-use-stat-instead-of-udevadm-for-partition-lookup-with-new-glibc.patch + with upstream backport: + 0001-osdep-Introduce-include-grub-osdep-major.h-and-use-i.patch and + 0002-osdep-linux-hostdisk-Use-stat-instead-of-udevadm-for.patch. + +------------------------------------------------------------------- Old: ---- fix-grub2-use-stat-instead-of-udevadm-for-partition-lookup-with-new-glibc.patch grub2-use-stat-instead-of-udevadm-for-partition-lookup.patch New: ---- 0001-osdep-Introduce-include-grub-osdep-major.h-and-use-i.patch 0002-osdep-linux-hostdisk-Use-stat-instead-of-udevadm-for.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grub2.spec ++++++ --- /var/tmp/diff_new_pack.gw5V9P/_old 2021-08-06 22:44:26.302107052 +0200 +++ /var/tmp/diff_new_pack.gw5V9P/_new 2021-08-06 22:44:26.302107052 +0200 @@ -257,8 +257,8 @@ Patch213: grub2-Fix-incorrect-netmask-on-ppc64.patch Patch215: grub2-ppc64-cas-new-scope.patch Patch218: grub2-ppc64-cas-fix-double-free.patch -Patch233: grub2-use-stat-instead-of-udevadm-for-partition-lookup.patch -Patch234: fix-grub2-use-stat-instead-of-udevadm-for-partition-lookup-with-new-glibc.patch +Patch233: 0001-osdep-Introduce-include-grub-osdep-major.h-and-use-i.patch +Patch234: 0002-osdep-linux-hostdisk-Use-stat-instead-of-udevadm-for.patch Patch236: grub2-efi_gop-avoid-low-resolution.patch # Support HTTP Boot IPv4 and IPv6 (fate#320129) Patch281: 0002-net-read-bracketed-ipv6-addrs-and-port-numbers.patch ++++++ 0001-osdep-Introduce-include-grub-osdep-major.h-and-use-i.patch ++++++ >From e94b4f23277f7572aacbbeae50b8927e03be148a Mon Sep 17 00:00:00 2001 From: Petr Vorel <pvo...@suse.cz> Date: Thu, 15 Jul 2021 17:35:27 +0200 Subject: [PATCH 1/2] osdep: Introduce include/grub/osdep/major.h and use it ... to factor out fix for glibc 2.25 introduced in 7a5b301e3 (build: Use AC_HEADER_MAJOR to find device macros). Note: Once glibc 2.25 is old enough and this fix is not needed also AC_HEADER_MAJOR in configure.ac should be removed. Signed-off-by: Petr Vorel <pvo...@suse.cz> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> [ upstream status: e94b4f232 ("osdep: Introduce include/grub/osdep/major.h and use it") ] --- configure.ac | 2 +- grub-core/osdep/devmapper/getroot.c | 7 +----- grub-core/osdep/devmapper/hostdisk.c | 7 +----- grub-core/osdep/linux/getroot.c | 7 +----- grub-core/osdep/unix/getroot.c | 7 +----- include/grub/osdep/major.h | 33 ++++++++++++++++++++++++++++ 6 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 include/grub/osdep/major.h diff --git a/configure.ac b/configure.ac index b025e1e84..bee28dbeb 100644 --- a/configure.ac +++ b/configure.ac @@ -424,7 +424,7 @@ AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h) # glibc 2.25 still includes sys/sysmacros.h in sys/types.h but emits deprecation # warning which causes compilation failure later with -Werror. So use -Werror here -# as well to force proper sys/sysmacros.h detection. +# as well to force proper sys/sysmacros.h detection. Used in include/grub/osdep/major.h. SAVED_CFLAGS="$CFLAGS" CFLAGS="$HOST_CFLAGS -Werror" AC_HEADER_MAJOR diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c index a13a39c96..9ba5c9865 100644 --- a/grub-core/osdep/devmapper/getroot.c +++ b/grub-core/osdep/devmapper/getroot.c @@ -40,12 +40,7 @@ #include <limits.h> #endif -#if defined(MAJOR_IN_MKDEV) -#include <sys/mkdev.h> -#elif defined(MAJOR_IN_SYSMACROS) -#include <sys/sysmacros.h> -#endif - +#include <grub/osdep/major.h> #include <libdevmapper.h> #include <grub/types.h> diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c index a8afc0c94..c8053728b 100644 --- a/grub-core/osdep/devmapper/hostdisk.c +++ b/grub-core/osdep/devmapper/hostdisk.c @@ -11,6 +11,7 @@ #include <grub/misc.h> #include <grub/i18n.h> #include <grub/list.h> +#include <grub/osdep/major.h> #include <stdio.h> #include <stdlib.h> @@ -24,12 +25,6 @@ #include <errno.h> #include <limits.h> -#if defined(MAJOR_IN_MKDEV) -#include <sys/mkdev.h> -#elif defined(MAJOR_IN_SYSMACROS) -#include <sys/sysmacros.h> -#endif - #ifdef HAVE_DEVICE_MAPPER # include <libdevmapper.h> diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c index 001b818fe..cd588588e 100644 --- a/grub-core/osdep/linux/getroot.c +++ b/grub-core/osdep/linux/getroot.c @@ -35,12 +35,7 @@ #include <limits.h> #endif -#if defined(MAJOR_IN_MKDEV) -#include <sys/mkdev.h> -#elif defined(MAJOR_IN_SYSMACROS) -#include <sys/sysmacros.h> -#endif - +#include <grub/osdep/major.h> #include <grub/types.h> #include <sys/ioctl.h> /* ioctl */ #include <sys/mount.h> diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c index 46d7116c6..74f69116d 100644 --- a/grub-core/osdep/unix/getroot.c +++ b/grub-core/osdep/unix/getroot.c @@ -51,12 +51,7 @@ #endif /* ! FLOPPY_MAJOR */ #endif -#include <sys/types.h> -#if defined(MAJOR_IN_MKDEV) -#include <sys/mkdev.h> -#elif defined(MAJOR_IN_SYSMACROS) -#include <sys/sysmacros.h> -#endif +#include <grub/osdep/major.h> #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR) # include <grub/util/libzfs.h> diff --git a/include/grub/osdep/major.h b/include/grub/osdep/major.h new file mode 100644 index 000000000..84a9159af --- /dev/null +++ b/include/grub/osdep/major.h @@ -0,0 +1,33 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2021 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see <http://www.gnu.org/licenses/>. + * + * Fix for glibc 2.25 which is deprecating the namespace pollution of + * sys/types.h injecting major(), minor(), and makedev() into the + * compilation environment. + */ + +#ifndef GRUB_OSDEP_MAJOR_H +#define GRUB_OSDEP_MAJOR_H 1 + +#include <sys/types.h> + +#ifdef MAJOR_IN_MKDEV +# include <sys/mkdev.h> +#elif defined (MAJOR_IN_SYSMACROS) +# include <sys/sysmacros.h> +#endif +#endif /* GRUB_OSDEP_MAJOR_H */ -- 2.32.0 ++++++ 0002-osdep-linux-hostdisk-Use-stat-instead-of-udevadm-for.patch ++++++ >From 1ea4e5ef09c06552402bf676ce262a661372f08d Mon Sep 17 00:00:00 2001 From: Jeff Mahoney <je...@suse.com> Date: Thu, 15 Jul 2021 17:35:28 +0200 Subject: [PATCH 2/2] osdep/linux/hostdisk: Use stat() instead of udevadm for partition lookup The 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 grub-mkconfig to somewhere near 55% on system without LVM (which uses libdevmapper instead sysfs_partition_path()). Remove udevadm call as it does not help us more than calling stat() directly. Signed-off-by: Jeff Mahoney <je...@suse.com> Signed-off-by: Petr Vorel <pvo...@suse.cz> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> [ upstream status: 1ea4e5ef0 ("osdep/linux/hostdisk: Use stat() instead of udevadm for partition lookup") --- grub-core/osdep/linux/hostdisk.c | 52 ++++---------------------------- 1 file changed, 6 insertions(+), 46 deletions(-) diff --git a/grub-core/osdep/linux/hostdisk.c b/grub-core/osdep/linux/hostdisk.c index da62f924e..d3326d095 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> @@ -98,54 +99,13 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec static char * sysfs_partition_path (const char *dev, const char *entry) { - const char *argv[7]; - int fd; - pid_t pid; - FILE *udevadm; - char *buf = NULL; - size_t len = 0; - char *path = NULL; - - argv[0] = "udevadm"; - argv[1] = "info"; - argv[2] = "--query"; - argv[3] = "path"; - argv[4] = "--name"; - argv[5] = dev; - argv[6] = NULL; - - pid = grub_util_exec_pipe (argv, &fd); - - if (!pid) - return NULL; - - /* Parent. Read udevadm's output. */ - udevadm = fdopen (fd, "r"); - if (!udevadm) - { - grub_util_warn (_("Unable to open stream from %s: %s"), - "udevadm", strerror (errno)); - close (fd); - goto out; - } - - if (getline (&buf, &len, udevadm) > 0) - { - char *newline; - - newline = strchr (buf, '\n'); - if (newline) - *newline = '\0'; - path = xasprintf ("/sys%s/%s", buf, entry); - } + struct stat st; -out: - if (udevadm) - fclose (udevadm); - waitpid (pid, NULL, 0); - free (buf); + if (stat (dev, &st) == 0 && S_ISBLK (st.st_mode)) + return xasprintf ("/sys/dev/block/%u:%u/%s", + major (st.st_rdev), minor (st.st_rdev), entry); - return path; + return NULL; } static int -- 2.32.0