From a44a6377ed136bded4d1f3a0fa03e0950b737a03 Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Mon, 16 May 2022 21:15:56 +0000 Subject: [PATCH] ppc64le: make ofdisk retries optional Signed-off-by: Robbie Harwood --- 0219-make-ofdisk_retries-optional.patch | 43 +++++++++++++++++++++++++ grub.patches | 1 + grub2.spec | 5 ++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 0219-make-ofdisk_retries-optional.patch diff --git a/0219-make-ofdisk_retries-optional.patch b/0219-make-ofdisk_retries-optional.patch new file mode 100644 index 0000000..fce9702 --- /dev/null +++ b/0219-make-ofdisk_retries-optional.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Diego Domingos +Date: Thu, 24 Mar 2022 13:14:42 -0400 +Subject: [PATCH] make ofdisk_retries optional + +The feature Retry on Fail added to GRUB can cause a LPM to take +longer if the SAN is slow. + +When a LPM to external site occur, the path of the disk can change +and thus the disk search function on grub can take some time since +it is used as a hint. This can cause the Retry on Fail feature to +try to access the disk 20x times (since this is hardcoded number) +and, if the SAN is slow, the boot time can increase a lot. +In some situations not acceptable. + +The following patch enables a configuration at user space of the +maximum number of retries we want for this feature. + +The variable ofdisk_retries should be set using grub2-editenv +and will be checked by retry function. If the variable is not set, +so the default number of retries will be used instead. +--- + include/grub/ieee1275/ofdisk.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/include/grub/ieee1275/ofdisk.h b/include/grub/ieee1275/ofdisk.h +index 7d2d540930..0074d55eee 100644 +--- a/include/grub/ieee1275/ofdisk.h ++++ b/include/grub/ieee1275/ofdisk.h +@@ -25,7 +25,12 @@ extern void grub_ofdisk_fini (void); + #define MAX_RETRIES 20 + + +-#define RETRY_IEEE1275_OFDISK_OPEN(device, last_ihandle) unsigned retry_i=0;for(retry_i=0; retry_i < MAX_RETRIES; retry_i++){ \ ++#define RETRY_IEEE1275_OFDISK_OPEN(device, last_ihandle) \ ++ unsigned max_retries = MAX_RETRIES; \ ++ if(grub_env_get("ofdisk_retries") != NULL) \ ++ max_retries = grub_strtoul(grub_env_get("ofdisk_retries"), 0, 10)+1; \ ++ grub_dprintf("ofdisk","MAX_RETRIES set to %u\n",max_retries); \ ++ unsigned retry_i=0;for(retry_i=0; retry_i < max_retries; retry_i++){ \ + if(!grub_ieee1275_open(device, last_ihandle)) \ + break; \ + grub_dprintf("ofdisk","Opening disk %s failed. Retrying...\n",device); } diff --git a/grub.patches b/grub.patches index 7e54e28..b520d47 100644 --- a/grub.patches +++ b/grub.patches @@ -216,3 +216,4 @@ Patch0215: 0215-powerpc-do-CAS-in-a-more-compatible-way.patch Patch0216: 0216-powerpc-prefix-detection-support-device-names-with-c.patch Patch0217: 0217-ibmvtpm-Add-support-for-trusted-boot-using-a-vTPM-2..patch Patch0218: 0218-rpm-sort-add-prereqs-for-declaration-of-strchrnul.patch +Patch0219: 0219-make-ofdisk_retries-optional.patch diff --git a/grub2.spec b/grub2.spec index 44f66af..bcebe4c 100644 --- a/grub2.spec +++ b/grub2.spec @@ -17,7 +17,7 @@ Name: grub2 Epoch: 1 Version: 2.06 -Release: 40%{?dist} +Release: 41%{?dist} Summary: Bootloader with support for Linux, Multiboot and more License: GPLv3+ URL: http://www.gnu.org/software/grub/ @@ -530,6 +530,9 @@ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg %endif %changelog +* Mon May 16 2022 Robbie Harwood - 1:2.06-41 +- ppc64le: make ofdisk retries optional + * Thu May 05 2022 Robbie Harwood - 1:2.06-40 - Fix missing declaration of strchrnul in rpm-sort