forked from pool/grub2
8ee92f5194
- Implement NV index mode for TPM 2.0 key protector 0001-protectors-Implement-NV-index.patch - Fall back to passphrase mode when the key protector fails to unlock the disk 0002-cryptodisk-Fallback-to-passphrase.patch - Wipe out the cached key cleanly 0003-cryptodisk-wipe-out-the-cached-keys-from-protectors.patch - Make diskfiler to look up cryptodisk devices first 0004-diskfilter-look-up-cryptodisk-devices-first.patch - Version bump to 2.12~rc1 * Added: - grub-2.12~rc1.tar.xz * Removed: - grub-2.06.tar.xz * Patch dropped merged by new version: - grub2-GRUB_CMDLINE_LINUX_RECOVERY-for-recovery-mode.patch - grub2-s390x-02-kexec-module-added-to-emu.patch - grub2-efi-chainloader-root.patch - grub2-Fix-incorrect-netmask-on-ppc64.patch - 0001-osdep-Introduce-include-grub-osdep-major.h-and-use-i.patch - 0002-osdep-linux-hostdisk-Use-stat-instead-of-udevadm-for.patch - 0002-net-read-bracketed-ipv6-addrs-and-port-numbers.patch - grub2-s390x-10-keep-network-at-kexec.patch - 0001-Fix-build-error-in-binutils-2.36.patch - 0001-emu-fix-executable-stack-marking.patch - 0046-squash-verifiers-Move-verifiers-API-to-kernel-image.patch - 0001-30_uefi-firmware-fix-printf-format-with-null-byte.patch - 0001-tpm-Pass-unknown-error-as-non-fatal-but-debug-print-.patch - 0001-Filter-out-POSIX-locale-for-translation.patch OBS-URL: https://build.opensuse.org/request/show/1105405 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=458
59 lines
2.0 KiB
Diff
59 lines
2.0 KiB
Diff
From b0f9dcabe96e5689ecfba9b6abcd27e685eabd48 Mon Sep 17 00:00:00 2001
|
|
From: Michael Chang <mchang@suse.com>
|
|
Date: Wed, 11 May 2022 09:56:11 -0400
|
|
Subject: [PATCH] ofdisk: improve boot time by lookup boot disk first
|
|
|
|
While booting lvm, grub will try to build up logical volumes via hooks
|
|
to disk iteration where on-disk metadata can be read and parsed. However
|
|
the process can become very slow on multipath as reachable disks are
|
|
duplicated by multiple I/O paths and they all get inspected.
|
|
|
|
Fortunately grub allows lvm to be lazy binding and opportunistic that
|
|
root volume can be created when it's needed using a smaller set of
|
|
discovered disks. The disk iteration can also be controlled by pull
|
|
methods to only returning specified disks. That said we may be able to
|
|
take advantage of existing design to cause less overhead in lvm
|
|
construction.
|
|
|
|
This patch will return boot disks in OpenFirmware so they can be used
|
|
first. If lvm managed to create root volume out of those boot disks then
|
|
it is all very nice as they are readily available. Otherwise disk
|
|
scanning will be performed to present all discoverable disks to grub as
|
|
what it was done in the past. The result maybe again time consuming but
|
|
we have nothing to lose here.
|
|
|
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
|
---
|
|
grub-core/disk/ieee1275/ofdisk.c | 11 +++++++++--
|
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
|
|
--- a/grub-core/disk/ieee1275/ofdisk.c
|
|
+++ b/grub-core/disk/ieee1275/ofdisk.c
|
|
@@ -491,10 +491,11 @@
|
|
{
|
|
unsigned i;
|
|
|
|
- if (pull != GRUB_DISK_PULL_NONE)
|
|
+ if (pull > GRUB_DISK_PULL_REMOVABLE)
|
|
return 0;
|
|
|
|
- scan ();
|
|
+ if (pull == GRUB_DISK_PULL_REMOVABLE)
|
|
+ scan ();
|
|
|
|
for (i = 0; i < ARRAY_SIZE (ofdisk_hash); i++)
|
|
{
|
|
@@ -532,6 +533,12 @@
|
|
if (!ent->is_boot && ent->is_removable)
|
|
continue;
|
|
|
|
+ if (pull == GRUB_DISK_PULL_NONE && !ent->is_boot)
|
|
+ continue;
|
|
+
|
|
+ if (pull == GRUB_DISK_PULL_REMOVABLE && ent->is_boot)
|
|
+ continue;
|
|
+
|
|
if (hook (ent->grub_shortest, hook_data))
|
|
return 1;
|
|
}
|