From: Andrei Borzenkov <arvidjaar@gmail.com>
To: "Vladimir 'phcoder' Serbinenko" <phcoder@gmail.com>
Cc: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: normal does not load if there was an error processing embedded config
Date: Sat, 28 Feb 2015 22:33:51 +0300 [thread overview]
Message-ID: <20150228223351.09c01ade@opensuse.site> (raw)
In-Reply-To: <CAEaD8JOUnOoohQ=AroSTbkdA_nVdHjW+nODPb9kLTB7yOdTtOw@mail.gmail.com>
В Sat, 28 Feb 2015 19:11:51 +0100
"Vladimir 'phcoder' Serbinenko" <phcoder@gmail.com> пишет:
> Could you use grub-print-error rather than just resetting error? And we
> should do it after every command in embedded config
Like below? Note that if loading of normal.mod succeeds these errors are
lost anyway. There was at least one report where skipping loading in
this case would actually make diagnostic easier (signed EFI image with
missing filesystem driver for /boot). But I'm not sure if anyone
depends on current behavior. grub-mkrescue definitely does :)
From: Andrei Borzenkov <arvidjaar@gmail.com>
Subject: [PATCH] kernel: reset grub_errno before loading normal
If last command in embedded config set grub_errno, loading of
normal fails. As we do not really check for any errors during
processing of embedded config and cannot handle error that happened
in the middle of it, just ignore error and hope for the best.
Add also printing of errors during embedded config processing to
facilitate diagnostic as suggested by Vladimir.
---
grub-core/kern/main.c | 2 ++
grub-core/kern/parser.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
index 9cad0c4..22483b6 100644
--- a/grub-core/kern/main.c
+++ b/grub-core/kern/main.c
@@ -304,6 +304,8 @@ grub_main (void)
if (load_config)
grub_parser_execute (load_config);
+ /* Reset error, otherwise loading of normal.mod fails */
+ grub_errno = GRUB_ERR_NONE;
grub_boot_time ("After execution of embedded config. Attempt to go to normal mode");
diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c
index b9bd123..13acb6c 100644
--- a/grub-core/kern/parser.c
+++ b/grub-core/kern/parser.c
@@ -265,9 +265,11 @@ grub_parser_execute (char *source)
{
char *line;
+ grub_errno = GRUB_ERR_NONE;
grub_parser_execute_getline (&line, 0, &source);
grub_rescue_parse_line (line, grub_parser_execute_getline, &source);
grub_free (line);
+ grub_print_error ();
}
return grub_errno;
--
tg: (018f79d..) u/reset-error-before-normal (depends on: master)
next prev parent reply other threads:[~2015-02-28 19:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-28 17:45 normal does not load if there was an error processing embedded config Andrei Borzenkov
2015-02-28 18:11 ` Vladimir 'phcoder' Serbinenko
2015-02-28 19:33 ` Andrei Borzenkov [this message]
2015-12-16 18:45 ` Andrei Borzenkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150228223351.09c01ade@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=phcoder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).