From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1JNYDK-0005U7-1m for mharc-grub-devel@gnu.org; Fri, 08 Feb 2008 13:44:42 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JNYDI-0005Sh-QE for grub-devel@gnu.org; Fri, 08 Feb 2008 13:44:40 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JNYDG-0005PY-Vy for grub-devel@gnu.org; Fri, 08 Feb 2008 13:44:39 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JNYDG-0005PK-Nt for grub-devel@gnu.org; Fri, 08 Feb 2008 13:44:38 -0500 Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JNYDG-0001ks-Ei for grub-devel@gnu.org; Fri, 08 Feb 2008 13:44:38 -0500 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1JNYDB-0007zl-JV for grub-devel@gnu.org; Fri, 08 Feb 2008 18:44:33 +0000 Received: from crypt.ethx.net ([82.165.27.140]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 08 Feb 2008 18:44:33 +0000 Received: from sam by crypt.ethx.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 08 Feb 2008 18:44:33 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: grub-devel@gnu.org From: Sam Morris Date: Fri, 8 Feb 2008 18:44:26 +0000 (UTC) Message-ID: References: <1202409267.5010.2.camel@xerces> <20080208011029.GA4418@thorin> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: crypt.ethx.net User-Agent: Pan/0.132 (Waxed in Black) Sender: news X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) Subject: Re: [PATCH] tell the user why they are in rescue mode X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Feb 2008 18:44:41 -0000 On Fri, 08 Feb 2008 02:10:29 +0100, Robert Millan wrote: > Hi Sam, > > On Thu, Feb 07, 2008 at 06:34:26PM +0000, Sam Morris wrote: >> diff -ru grub2-1.96+20080203+orig/kern/main.c >> grub2-1.96+20080203+sam/kern/main.c --- >> grub2-1.96+20080203+orig/kern/main.c 2008-01-05 12:04:35.000000000 >> +0000 +++ grub2-1.96+20080203+sam/kern/main.c 2008-02-07 >> 08:41:01.000000000 +0000 @@ -102,8 +102,13 @@ >> /* Load the module. */ >> grub_dl_load ("normal"); >> >> - /* Ignore any error, because we have the rescue mode anyway. */ - >> grub_errno = GRUB_ERR_NONE; >> + if (grub_errno != GRUB_ERR_NONE) >> + { >> + grub_printf ("Unable to enter 'normal' mode (error %d: %s)\n", >> grub_errno, grub_errmsg); + >> + /* We're about to continue into rescue mode, so clear the error. >> */ + grub_errno = GRUB_ERR_NONE; >> + } > > I just checked, and it seems we already have a function for this: > grub_print_error(). If you just invoke this function, do you get the > desired result? Yes, it works fine. > Also, I wonder why the existing grub_print_error() call in the rescue > loop doesn't handle this already (in kern/rescue.c). > > Perhaps all you need to do is remove these two lines? > > diff -ur grub2/kern/main.c tmp/kern/main.c --- grub2/kern/main.c > 2008-01-05 13:04:35.000000000 +0100 +++ tmp/kern/main.c 2008-02-08 > 02:09:03.000000000 +0100 @@ -101,9 +101,6 @@ > { > /* Load the module. */ > grub_dl_load ("normal"); > - > - /* Ignore any error, because we have the rescue mode anyway. */ - > grub_errno = GRUB_ERR_NONE; > } > > /* The main routine. */ While that works, the output looks like this: Entering rescue mode... error: out of disk > _ Which does not present the information in the clearest possible way: it looks like the error happened in the rescue mode code, instead of the normal mode code. Also, the error message could be lost if any of the code between the start of grub_enter_rescue_mode and its call to grub_print_error itself triggers an error. For these reasons I think it's better to call grub_print_error from within grub_load_normal. BTW, does anyone know the first thing grub_enter_rescue_mode does is call attempt_normal_mode? -- Sam Morris http://robots.org.uk/ PGP key id 1024D/5EA01078 3412 EA18 1277 354B 991B C869 B219 7FDB 5EA0 1078