From 7a7c298814234d90d331e08a53b6062409c0b0b20f93a4a28b440c7d12b92d7a Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Fri, 9 Dec 2022 08:55:31 +0000 Subject: [PATCH 1/4] Accepting request 1041797 from home:gary_lin:branches:Base:System Move unsupported zfs modules into 'extras' packages (bsc#1205554) OBS-URL: https://build.opensuse.org/request/show/1041797 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=430 --- grub2.changes | 5 ++++ grub2.spec | 71 ++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/grub2.changes b/grub2.changes index 96c8b3a..6e3fd13 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Dec 9 03:54:19 UTC 2022 - Gary Ching-Pang Lin + +- Move unsupported zfs modules into 'extras' packages (bsc#1205554) + ------------------------------------------------------------------- Mon Dec 5 08:47:06 UTC 2022 - Michael Chang diff --git a/grub2.spec b/grub2.spec index 49ace87..7be708b 100644 --- a/grub2.spec +++ b/grub2.spec @@ -551,6 +551,16 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for %{platform} systems. +%package %{grubarch}-extras +Summary: Unsupported modules for %{grubarch} +Group: System/Boot +BuildArch: noarch +Requires: %{name}-%{grubarch} = %{version} +Supplements: %{name}-%{grubarch} = %{version} + +%description %{grubarch}-extras +Unsupported modules for %{name}-%{grubarch} + %package %{grubarch}-debug Summary: Debug symbols for %{grubarch} Group: System/Boot @@ -595,6 +605,17 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for EFI systems. +%package %{grubefiarch}-extras + +Summary: Unsupported modules for %{grubefiarch} +Group: System/Boot +BuildArch: noarch +Requires: %{name}-%{grubefiarch} = %{version} +Supplements: %{name}-%{grubefiarch} = %{version} + +%description %{grubefiarch}-extras +Unsupported modules for %{name}-%{grubefiarch} + %package %{grubefiarch}-debug Summary: Debug symbols for %{grubefiarch} Group: System/Boot @@ -627,6 +648,16 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for XEN systems. +%package %{grubxenarch}-extras +Summary: Unsupported modules for %{grubxenarch} +Group: System/Boot +BuildArch: noarch +Requires: %{name}-%{grubxenarch} = %{version} +Supplements: %{name}-%{grubxenarch} = %{version} + +%description %{grubxenarch}-extras +Unsupported modules for %{name}-%{grubxenarch} + %endif %package snapper-plugin @@ -1103,6 +1134,25 @@ perl -ni -e ' %else %endif +# bsc#1205554 move the zfs modules into extras packages +# EXTRA_PATTERN='pattern1|pattern2|pattern3|...' +EXTRA_PATTERN="zfs" +%ifarch %{ix86} x86_64 +find %{buildroot}/%{_datadir}/%{name}/%{grubxenarch}/ -type f | sed 's,%{buildroot},,' > %{grubxenarch}-all.lst +grep -v -E ${EXTRA_PATTERN} %{grubxenarch}-all.lst > %{grubxenarch}.lst +grep -E ${EXTRA_PATTERN} %{grubxenarch}-all.lst > %{grubxenarch}-extras.lst +%endif + +%ifarch %{efi} +find %{buildroot}/%{_datadir}/%{name}/%{grubefiarch}/ -name '*.mod' | sed 's,%{buildroot},,' > %{grubefiarch}-mod-all.lst +grep -v -E ${EXTRA_PATTERN} %{grubefiarch}-mod-all.lst > %{grubefiarch}-mod.lst +grep -E ${EXTRA_PATTERN} %{grubefiarch}-mod-all.lst > %{grubefiarch}-mod-extras.lst +%endif + +find %{buildroot}/%{_datadir}/%{name}/%{grubarch}/ -name '*.mod' | sed 's,%{buildroot},,' > %{grubarch}-mod-all.lst +grep -v -E ${EXTRA_PATTERN} %{grubarch}-mod-all.lst > %{grubarch}-mod.lst +grep -E ${EXTRA_PATTERN} %{grubarch}-mod-all.lst > %{grubarch}-mod-extras.lst + %find_lang %{name} %fdupes %buildroot%{_bindir} %fdupes %buildroot%{_libdir} @@ -1374,7 +1424,7 @@ fi %if ! 0%{?only_efi:1} -%files %{grubarch} +%files %{grubarch} -f %{grubarch}-mod.lst %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubarch} %ifarch ppc ppc64 ppc64le @@ -1389,7 +1439,6 @@ fi %endif %{_datadir}/%{name}/%{grubarch}/*.img %{_datadir}/%{name}/%{grubarch}/*.lst -%{_datadir}/%{name}/%{grubarch}/*.mod %ifarch x86_64 %{_datadir}/%{name}/%{grubarch}/efiemu*.o %endif @@ -1399,6 +1448,10 @@ fi %{_libexecdir}/%{name}-instdev-fixup.pl %endif +%files %{grubarch}-extras -f %{grubarch}-mod-extras.lst +%defattr(-,root,root,-) +%dir %{_datadir}/%{name}/%{grubarch} + %files %{grubarch}-debug %defattr(-,root,root,-) %{_datadir}/%{name}/%{grubarch}/gdb_grub @@ -1409,7 +1462,7 @@ fi %ifarch %{efi} -%files %{grubefiarch} +%files %{grubefiarch} -f %{grubefiarch}-mod.lst %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubefiarch} %{_datadir}/%{name}/%{grubefiarch}/grub.efi @@ -1418,7 +1471,6 @@ fi %endif %{_datadir}/%{name}/%{grubefiarch}/*.img %{_datadir}/%{name}/%{grubefiarch}/*.lst -%{_datadir}/%{name}/%{grubefiarch}/*.mod %{_datadir}/%{name}/%{grubefiarch}/kernel.exec %{_datadir}/%{name}/%{grubefiarch}/modinfo.sh %dir %{sysefibasedir} @@ -1437,6 +1489,10 @@ fi %{sysefidir}/grub.der %endif +%files %{grubefiarch}-extras -f %{grubefiarch}-mod-extras.lst +%defattr(-,root,root,-) +%dir %{_datadir}/%{name}/%{grubefiarch} + %files %{grubefiarch}-debug %defattr(-,root,root,-) %{_datadir}/%{name}/%{grubefiarch}/gdb_grub @@ -1453,13 +1509,16 @@ fi %{_libdir}/snapper/plugins/grub %ifarch %{ix86} x86_64 -%files %{grubxenarch} +%files %{grubxenarch} -f %{grubxenarch}.lst %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubxenarch} -%{_datadir}/%{name}/%{grubxenarch}/* # provide compatibility sym-link for VM definitions pointing to old location %dir %{_libdir}/%{name} %{_libdir}/%{name}/%{grubxenarch} + +%files %{grubxenarch}-extras -f %{grubxenarch}-extras.lst +%defattr(-,root,root,-) +%dir %{_datadir}/%{name}/%{grubxenarch} %endif %if 0%{?has_systemd:1} From 56f10d0ce07de1d179158130fda21a8209f34dadc1390ed34749324c2f73f633 Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Mon, 12 Dec 2022 05:41:30 +0000 Subject: [PATCH 2/4] Accepting request 1042243 from Base:System Revert the zfs change for now OBS-URL: https://build.opensuse.org/request/show/1042243 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=431 --- grub2.changes | 5 ---- grub2.spec | 71 +++++---------------------------------------------- 2 files changed, 6 insertions(+), 70 deletions(-) diff --git a/grub2.changes b/grub2.changes index 6e3fd13..96c8b3a 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,8 +1,3 @@ -------------------------------------------------------------------- -Fri Dec 9 03:54:19 UTC 2022 - Gary Ching-Pang Lin - -- Move unsupported zfs modules into 'extras' packages (bsc#1205554) - ------------------------------------------------------------------- Mon Dec 5 08:47:06 UTC 2022 - Michael Chang diff --git a/grub2.spec b/grub2.spec index 7be708b..49ace87 100644 --- a/grub2.spec +++ b/grub2.spec @@ -551,16 +551,6 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for %{platform} systems. -%package %{grubarch}-extras -Summary: Unsupported modules for %{grubarch} -Group: System/Boot -BuildArch: noarch -Requires: %{name}-%{grubarch} = %{version} -Supplements: %{name}-%{grubarch} = %{version} - -%description %{grubarch}-extras -Unsupported modules for %{name}-%{grubarch} - %package %{grubarch}-debug Summary: Debug symbols for %{grubarch} Group: System/Boot @@ -605,17 +595,6 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for EFI systems. -%package %{grubefiarch}-extras - -Summary: Unsupported modules for %{grubefiarch} -Group: System/Boot -BuildArch: noarch -Requires: %{name}-%{grubefiarch} = %{version} -Supplements: %{name}-%{grubefiarch} = %{version} - -%description %{grubefiarch}-extras -Unsupported modules for %{name}-%{grubefiarch} - %package %{grubefiarch}-debug Summary: Debug symbols for %{grubefiarch} Group: System/Boot @@ -648,16 +627,6 @@ bootloader with modular architecture. It supports rich variety of kernel format file systems, computer architectures and hardware devices. This subpackage provides support for XEN systems. -%package %{grubxenarch}-extras -Summary: Unsupported modules for %{grubxenarch} -Group: System/Boot -BuildArch: noarch -Requires: %{name}-%{grubxenarch} = %{version} -Supplements: %{name}-%{grubxenarch} = %{version} - -%description %{grubxenarch}-extras -Unsupported modules for %{name}-%{grubxenarch} - %endif %package snapper-plugin @@ -1134,25 +1103,6 @@ perl -ni -e ' %else %endif -# bsc#1205554 move the zfs modules into extras packages -# EXTRA_PATTERN='pattern1|pattern2|pattern3|...' -EXTRA_PATTERN="zfs" -%ifarch %{ix86} x86_64 -find %{buildroot}/%{_datadir}/%{name}/%{grubxenarch}/ -type f | sed 's,%{buildroot},,' > %{grubxenarch}-all.lst -grep -v -E ${EXTRA_PATTERN} %{grubxenarch}-all.lst > %{grubxenarch}.lst -grep -E ${EXTRA_PATTERN} %{grubxenarch}-all.lst > %{grubxenarch}-extras.lst -%endif - -%ifarch %{efi} -find %{buildroot}/%{_datadir}/%{name}/%{grubefiarch}/ -name '*.mod' | sed 's,%{buildroot},,' > %{grubefiarch}-mod-all.lst -grep -v -E ${EXTRA_PATTERN} %{grubefiarch}-mod-all.lst > %{grubefiarch}-mod.lst -grep -E ${EXTRA_PATTERN} %{grubefiarch}-mod-all.lst > %{grubefiarch}-mod-extras.lst -%endif - -find %{buildroot}/%{_datadir}/%{name}/%{grubarch}/ -name '*.mod' | sed 's,%{buildroot},,' > %{grubarch}-mod-all.lst -grep -v -E ${EXTRA_PATTERN} %{grubarch}-mod-all.lst > %{grubarch}-mod.lst -grep -E ${EXTRA_PATTERN} %{grubarch}-mod-all.lst > %{grubarch}-mod-extras.lst - %find_lang %{name} %fdupes %buildroot%{_bindir} %fdupes %buildroot%{_libdir} @@ -1424,7 +1374,7 @@ fi %if ! 0%{?only_efi:1} -%files %{grubarch} -f %{grubarch}-mod.lst +%files %{grubarch} %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubarch} %ifarch ppc ppc64 ppc64le @@ -1439,6 +1389,7 @@ fi %endif %{_datadir}/%{name}/%{grubarch}/*.img %{_datadir}/%{name}/%{grubarch}/*.lst +%{_datadir}/%{name}/%{grubarch}/*.mod %ifarch x86_64 %{_datadir}/%{name}/%{grubarch}/efiemu*.o %endif @@ -1448,10 +1399,6 @@ fi %{_libexecdir}/%{name}-instdev-fixup.pl %endif -%files %{grubarch}-extras -f %{grubarch}-mod-extras.lst -%defattr(-,root,root,-) -%dir %{_datadir}/%{name}/%{grubarch} - %files %{grubarch}-debug %defattr(-,root,root,-) %{_datadir}/%{name}/%{grubarch}/gdb_grub @@ -1462,7 +1409,7 @@ fi %ifarch %{efi} -%files %{grubefiarch} -f %{grubefiarch}-mod.lst +%files %{grubefiarch} %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubefiarch} %{_datadir}/%{name}/%{grubefiarch}/grub.efi @@ -1471,6 +1418,7 @@ fi %endif %{_datadir}/%{name}/%{grubefiarch}/*.img %{_datadir}/%{name}/%{grubefiarch}/*.lst +%{_datadir}/%{name}/%{grubefiarch}/*.mod %{_datadir}/%{name}/%{grubefiarch}/kernel.exec %{_datadir}/%{name}/%{grubefiarch}/modinfo.sh %dir %{sysefibasedir} @@ -1489,10 +1437,6 @@ fi %{sysefidir}/grub.der %endif -%files %{grubefiarch}-extras -f %{grubefiarch}-mod-extras.lst -%defattr(-,root,root,-) -%dir %{_datadir}/%{name}/%{grubefiarch} - %files %{grubefiarch}-debug %defattr(-,root,root,-) %{_datadir}/%{name}/%{grubefiarch}/gdb_grub @@ -1509,16 +1453,13 @@ fi %{_libdir}/snapper/plugins/grub %ifarch %{ix86} x86_64 -%files %{grubxenarch} -f %{grubxenarch}.lst +%files %{grubxenarch} %defattr(-,root,root,-) %dir %{_datadir}/%{name}/%{grubxenarch} +%{_datadir}/%{name}/%{grubxenarch}/* # provide compatibility sym-link for VM definitions pointing to old location %dir %{_libdir}/%{name} %{_libdir}/%{name}/%{grubxenarch} - -%files %{grubxenarch}-extras -f %{grubxenarch}-extras.lst -%defattr(-,root,root,-) -%dir %{_datadir}/%{name}/%{grubxenarch} %endif %if 0%{?has_systemd:1} From 4f37c09e47498e359470caf2acc93b8661c5bff77b2720db8a5dd56418b74d49 Mon Sep 17 00:00:00 2001 From: Michael Chang Date: Mon, 19 Dec 2022 03:45:35 +0000 Subject: [PATCH 3/4] Accepting request 1043245 from home:gary_lin:bsc1206333 - Increase the path buffer in the crypttab command for the long volume name (bsc#1206333) * grub2-increase-crypttab-path-buffer.patch OBS-URL: https://build.opensuse.org/request/show/1043245 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=432 --- grub2-increase-crypttab-path-buffer.patch | 26 +++++++++++++++++++++++ grub2.changes | 7 ++++++ grub2.spec | 1 + 3 files changed, 34 insertions(+) create mode 100644 grub2-increase-crypttab-path-buffer.patch diff --git a/grub2-increase-crypttab-path-buffer.patch b/grub2-increase-crypttab-path-buffer.patch new file mode 100644 index 0000000..9f8349d --- /dev/null +++ b/grub2-increase-crypttab-path-buffer.patch @@ -0,0 +1,26 @@ +From bbf0d5b3bcdde357de343032ecf358764faf0339 Mon Sep 17 00:00:00 2001 +From: Gary Lin +Date: Fri, 16 Dec 2022 09:19:50 +0800 +Subject: [PATCH] commands/crypttab: increase the size of the path buffer + +Allocate a larger buffer for the cryptsetup.d path in case the system +uses a long volume name. + +Signed-off-by: Gary Lin +--- + grub-core/commands/crypttab.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: grub-2.06/grub-core/commands/crypttab.c +=================================================================== +--- grub-2.06.orig/grub-core/commands/crypttab.c ++++ grub-2.06/grub-core/commands/crypttab.c +@@ -11,7 +11,7 @@ static grub_err_t + grub_cmd_crypttab_entry (grub_command_t cmd __attribute__ ((unused)), + int argc, char **argv) + { +- char buf[64]; ++ char buf[256]; + const char *path = NULL; + + if (argc == 2) diff --git a/grub2.changes b/grub2.changes index 96c8b3a..5b384d1 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Dec 16 01:51:45 UTC 2022 - Gary Ching-Pang Lin + +- Increase the path buffer in the crypttab command for the long + volume name (bsc#1206333) + * grub2-increase-crypttab-path-buffer.patch + ------------------------------------------------------------------- Mon Dec 5 08:47:06 UTC 2022 - Michael Chang diff --git a/grub2.spec b/grub2.spec index 49ace87..c863312 100644 --- a/grub2.spec +++ b/grub2.spec @@ -479,6 +479,7 @@ Patch949: 0012-normal-charset-Fix-an-integer-overflow-in-grub_unico.patch Patch950: 0001-fs-btrfs-Use-full-btrfs-bootloader-area.patch Patch951: 0002-Mark-environmet-blocks-as-used-for-image-embedding.patch Patch952: 0001-ieee1275-Increase-initially-allocated-heap-from-1-4-.patch +Patch953: grub2-increase-crypttab-path-buffer.patch Requires: gettext-runtime %if 0%{?suse_version} >= 1140 From 7db9c91d3c7665cadc3a590530d007f4fe5ec3703c1d98f46bbb22fd148896c4 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Tue, 20 Dec 2022 15:32:08 +0000 Subject: [PATCH 4/4] Accepting request 1043840 from home:michael-chang:branches:Base:System - Setup multiple device paths for a nvmf boot device (bsc#1205666) * 0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch OBS-URL: https://build.opensuse.org/request/show/1043840 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=433 --- ...le-device-path-for-a-nvmf-boot-devic.patch | 175 ++++++++++++++++++ grub2.changes | 6 + grub2.spec | 1 + 3 files changed, 182 insertions(+) create mode 100644 0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch diff --git a/0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch b/0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch new file mode 100644 index 0000000..4cb7624 --- /dev/null +++ b/0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch @@ -0,0 +1,175 @@ +From 3e77c5494fd06f430588ae9c304fea370439d531 Mon Sep 17 00:00:00 2001 +From: Wen Xiong +Date: Thu, 15 Dec 2022 21:33:41 -0500 +Subject: [PATCH] grub2: Set multiple device path for a nvmf boot device + +nvmf support native multipath(ANA) by default. +The patch added the support for setting multiple +device path for a nvmf boot device. + +localhost:~ grub2-install -v /dev/nvme1n1p1 +... +... +... +grub2-install: info: executing nvsetenv boot-device /pci@800000020000132/fibre-channel@0,1/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec /pci@800000020000132/fibre-channel@0/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec /pci@800000020000132/fibre-channel@0/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec /pci@800000020000132/fibre-channel@0,1/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec. +Installation finished. No error reported. + +localhost:~ # bootlist -m normal -o +nvme7n1 +nvme5n1 +nvme1n1 +nvme4n1 + +localhost:~ # bootlist -m normal -r +/pci@800000020000132/fibre-channel@0,1/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec +/pci@800000020000132/fibre-channel@0/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec +/pci@800000020000132/fibre-channel@0/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec +/pci@800000020000132/fibre-channel@0,1/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@ec + +Signed-off-by: Wen Xiong +--- + grub-core/osdep/linux/ofpath.c | 6 ++--- + grub-core/osdep/unix/platform.c | 48 +++++++++++++++++++++++++++++++++ + include/grub/util/install.h | 3 +++ + include/grub/util/ofpath.h | 9 +++++++ + 4 files changed, 63 insertions(+), 3 deletions(-) + +diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c +index 7d31cfd0f..7129099db 100644 +--- a/grub-core/osdep/linux/ofpath.c ++++ b/grub-core/osdep/linux/ofpath.c +@@ -209,7 +209,7 @@ find_obppath (const char *sysfs_path_orig) + } + } + +-static char * ++char * + xrealpath (const char *in) + { + char *out; +@@ -224,7 +224,7 @@ xrealpath (const char *in) + return out; + } + +-static char * ++char * + block_device_get_sysfs_path_and_link(const char *devicenode) + { + char *rpath; +@@ -535,7 +535,7 @@ of_path_get_nvme_nsid(const char* devname) + + } + +-static char * ++char * + nvme_get_syspath(const char *nvmedev) + { + char *sysfs_path, *controller_node; +diff --git a/grub-core/osdep/unix/platform.c b/grub-core/osdep/unix/platform.c +index 1e2961e00..db8fa4b95 100644 +--- a/grub-core/osdep/unix/platform.c ++++ b/grub-core/osdep/unix/platform.c +@@ -19,6 +19,7 @@ + #include + + #include ++#include + #include + #include + #include +@@ -131,6 +132,51 @@ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor) + return rc; + } + ++char * ++build_multi_boot_device(const char *install_device) ++{ ++ char *sysfs_path; ++ char *nvme_ns; ++ unsigned int nsid; ++ char *ptr; ++ char *boot_device_string; ++ struct dirent *ep; ++ DIR *dp; ++ ++ nvme_ns = strchr(install_device, 'n'); ++ nsid = of_path_get_nvme_nsid(nvme_ns); ++ sysfs_path = nvme_get_syspath(nvme_ns); ++ strcat(sysfs_path, "/device"); ++ sysfs_path = xrealpath(sysfs_path); ++ ++ dp = opendir(sysfs_path); ++ ptr = boot_device_string = xmalloc (1000); ++ ++ /* We cannot have a boot list with more than five entries */ ++ while((ep = readdir(dp)) != NULL){ ++ char *nvme_device; ++ ++ if (grub_strstr(ep->d_name, "nvme")) { ++ nvme_device = xasprintf ("%s%s%x ", ++ get_ofpathname(ep->d_name),"/namespace@", nsid); ++ if ((strlen(boot_device_string) + strlen(nvme_device)) >= 200*5 - 1) { ++ grub_util_warn (_("More than five entries cannot be specified in the bootlist")); ++ free(nvme_device); ++ break; ++ } ++ ++ strncpy(ptr, nvme_device, strlen(nvme_device)); ++ ptr += strlen(nvme_device); ++ free(nvme_device); ++ } ++ } ++ ++ *--ptr = '\0'; ++ closedir(dp); ++ ++ return boot_device_string; ++} ++ + int + grub_install_register_efi (const grub_disk_t *efidir_grub_disk, + const char *efifile_path, +@@ -242,6 +288,8 @@ grub_install_register_ieee1275 (int is_prep, const char *install_device, + } + *ptr = '\0'; + } ++ else if (grub_strstr(install_device, "nvme")) ++ boot_device = build_multi_boot_device(install_device); + else + boot_device = get_ofpathname (install_device); + +diff --git a/include/grub/util/install.h b/include/grub/util/install.h +index c144f3e4d..15f24efac 100644 +--- a/include/grub/util/install.h ++++ b/include/grub/util/install.h +@@ -240,6 +240,9 @@ grub_install_register_efi (const grub_disk_t *efidir_grub_disk, + const char *efi_distributor, + const char *force_disk); + ++char * ++build_multi_boot_device(const char *install_device); ++ + void + grub_install_register_ieee1275 (int is_prep, const char *install_device, + int partno, const char *relpath); +diff --git a/include/grub/util/ofpath.h b/include/grub/util/ofpath.h +index a0ec30620..5b1f6a56d 100644 +--- a/include/grub/util/ofpath.h ++++ b/include/grub/util/ofpath.h +@@ -32,4 +32,13 @@ void find_file(char* filename, char* directory, struct ofpath_files_list_root* r + + char* of_find_fc_host(char* host_wwpn); + ++char* nvme_get_syspath(const char *nvmedev); ++ ++char* block_device_get_sysfs_path_and_link(const char *devicenode); ++ ++char* xrealpath (const char *in); ++ ++unsigned int of_path_get_nvme_nsid(const char* devname); ++ ++ + #endif /* ! GRUB_OFPATH_MACHINE_UTIL_HEADER */ +-- +2.35.3 + diff --git a/grub2.changes b/grub2.changes index 5b384d1..0d69c9b 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Dec 19 08:39:05 UTC 2022 - Michael Chang + +- Setup multiple device paths for a nvmf boot device (bsc#1205666) + * 0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch + ------------------------------------------------------------------- Fri Dec 16 01:51:45 UTC 2022 - Gary Ching-Pang Lin diff --git a/grub2.spec b/grub2.spec index c863312..f0fd7c9 100644 --- a/grub2.spec +++ b/grub2.spec @@ -480,6 +480,7 @@ Patch950: 0001-fs-btrfs-Use-full-btrfs-bootloader-area.patch Patch951: 0002-Mark-environmet-blocks-as-used-for-image-embedding.patch Patch952: 0001-ieee1275-Increase-initially-allocated-heap-from-1-4-.patch Patch953: grub2-increase-crypttab-path-buffer.patch +Patch954: 0001-grub2-Set-multiple-device-path-for-a-nvmf-boot-devic.patch Requires: gettext-runtime %if 0%{?suse_version} >= 1140