mirror of
https://src.fedoraproject.org/rpms/grub2.git
synced 2024-11-27 23:34:51 +00:00
emu: work around systemctl bad behavior
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
This commit is contained in:
parent
48cf39de05
commit
6a9365c88d
3 changed files with 46 additions and 1 deletions
41
0325-emu-linux-work-around-systemctl-kexec-returning.patch
Normal file
41
0325-emu-linux-work-around-systemctl-kexec-returning.patch
Normal file
|
@ -0,0 +1,41 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Robbie Harwood <rharwood@redhat.com>
|
||||
Date: Wed, 22 Mar 2023 14:19:43 -0400
|
||||
Subject: [PATCH] emu/linux: work around systemctl kexec returning
|
||||
|
||||
Per systemctl(1), it "is asynchronous; it will return after the reboot
|
||||
operation is enqueued, without waiting for it to complete". This
|
||||
differs from kexec(8), which calls reboot(2) and therefore does not
|
||||
return.
|
||||
|
||||
When not using fallback, this results in the confusing-but-harmless:
|
||||
|
||||
error trying to perform 'systemctl kexec': 0
|
||||
Aborted. Press any key to exit.
|
||||
|
||||
on screen for a bit, followed by successful kexec.
|
||||
|
||||
To reduce the liklihood of hitting this case, add a delay on succesful
|
||||
return. Ultimately, the systemd interface is racy: we can't avoid it
|
||||
entirely unless we never fallback on success.
|
||||
|
||||
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
|
||||
---
|
||||
grub-core/loader/emu/linux.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/grub-core/loader/emu/linux.c b/grub-core/loader/emu/linux.c
|
||||
index 0cf378a376..7de3f7f861 100644
|
||||
--- a/grub-core/loader/emu/linux.c
|
||||
+++ b/grub-core/loader/emu/linux.c
|
||||
@@ -74,6 +74,10 @@ grub_linux_boot (void)
|
||||
(kexecute==1) ? "do-or-die" : "just-in-case");
|
||||
rc = grub_util_exec (systemctl);
|
||||
|
||||
+ /* `systemctl kexec` is "asynchronous" and will return even on success. */
|
||||
+ if (rc == 0)
|
||||
+ grub_sleep (10);
|
||||
+
|
||||
if (kexecute == 1)
|
||||
grub_fatal (N_("error trying to perform 'systemctl kexec': %d"), rc);
|
||||
|
|
@ -322,3 +322,4 @@ Patch0321: 0321-mm-Preallocate-some-space-when-adding-new-regions.patch
|
|||
Patch0322: 0322-mm-Avoid-complex-heap-growth-math-in-hot-path.patch
|
||||
Patch0323: 0323-hostdisk-work-around-proc-not-reporting-size.patch
|
||||
Patch0324: 0324-blscfg-check-for-mounted-boot-in-emu.patch
|
||||
Patch0325: 0325-emu-linux-work-around-systemctl-kexec-returning.patch
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
Name: grub2
|
||||
Epoch: 1
|
||||
Version: 2.06
|
||||
Release: 89%{?dist}
|
||||
Release: 90%{?dist}
|
||||
Summary: Bootloader with support for Linux, Multiboot and more
|
||||
License: GPLv3+
|
||||
URL: http://www.gnu.org/software/grub/
|
||||
|
@ -544,6 +544,9 @@ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Mar 22 2023 Robbie Harwood <rharwood@redhat.com> - 2.06-90
|
||||
- emu: work around systemctl bad behavior
|
||||
|
||||
* Thu Mar 09 2023 Robbie Harwood <rharwood@redhat.com> - 2.06-89
|
||||
- emu: handle BLS /boot weirdness
|
||||
|
||||
|
|
Loading…
Reference in a new issue