From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1K5PqO-0003FG-1H for mharc-grub-devel@gnu.org; Sun, 08 Jun 2008 14:42:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K5PqL-0003CR-FR for grub-devel@gnu.org; Sun, 08 Jun 2008 14:42:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K5PqJ-0003BP-Sl for grub-devel@gnu.org; Sun, 08 Jun 2008 14:42:17 -0400 Received: from [199.232.76.173] (port=39522 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K5PqJ-0003B0-Lz for grub-devel@gnu.org; Sun, 08 Jun 2008 14:42:15 -0400 Received: from c60.cesmail.net ([216.154.195.49]:31812) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.60) (envelope-from ) id 1K5PqI-0000KT-I0 for grub-devel@gnu.org; Sun, 08 Jun 2008 14:42:15 -0400 Received: from unknown (HELO relay.cesmail.net) ([192.168.1.81]) by c60.cesmail.net with ESMTP; 08 Jun 2008 14:42:13 -0400 Received: from [192.168.0.21] (static-72-92-88-10.phlapa.fios.verizon.net [72.92.88.10]) by relay.cesmail.net (Postfix) with ESMTP id 54158619058 for ; Sun, 8 Jun 2008 14:42:12 -0400 (EDT) From: Pavel Roskin To: The development of GRUB 2 In-Reply-To: References: <20080604233536.GA21711@thorin> <1212792832.1893.17.camel@dv> <20080606233843.GB7956@thorin> <20080607023314.kftgc01au2o4c8sw-cebfxv@webmail.spamcop.net> <1212904845.3071.52.camel@rd> <1212907952.31548.2.camel@rd> <1212910148.14564.4.camel@rd> Content-Type: multipart/mixed; boundary="=-EPV8MSuNs+dJ3M4BikmZ" Date: Sun, 08 Jun 2008 14:42:10 -0400 Message-Id: <1212950530.8619.7.camel@dv> Mime-Version: 1.0 X-Mailer: Evolution 2.22.2 (2.22.2-2.fc9) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Subject: Re: [PATCH] biosdisk / open_device() messing up offsets 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: Sun, 08 Jun 2008 18:42:17 -0000 --=-EPV8MSuNs+dJ3M4BikmZ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sun, 2008-06-08 at 19:49 +0800, Bean wrote: > Can you use grub-fstest ? > > Also, the header is from > > + grub_printf ("header: %d %d %d\n", log->first_block, > log->last_block, log->start_block); > > I don't know why the number doesn't show, unless log is invalid > pointer. Perhaps the size is invalid, try to add a debug line to show > the allocated size of log: > > log = grub_malloc (sizeof (struct grub_fshelp_journal) + > grub_be_to_cpu32 (jsb->maxlen) * sizeof > (grub_disk_addr_t)); The debug output must be getting split somewhere. If I replace colons and spaces with underscores, I get some numbers. Anyway, the installation with the patch is unnecessary. I made a short partition and installed grub on it, but there are no problems with it in qemu. But I can reproduce the problem with grub-fstest on the root partition. [root@dv grub2]# grub-fstest /dev/sda1 ls / lost+found/ bin/ boot/ data/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ sbin/ scratchbox/ selinux/ srv/ sys/ tftpboot/ tmp/ usr/ var/ debug/ tftpboot;4834754b [root@dv grub2]# grub-fstest /dev/sda1 ls /boot [root@dv grub2]# ls / bin debug home lost+found opt sbin srv tftpboot;4834754b var boot dev lib media proc scratchbox sys tmp data etc lib64 mnt root selinux tftpboot usr [root@dv grub2]# ls /boot System.map grub vmlinuz System.map-2.6.26-rc4-wl initrd-2.6.26-rc4-wl.img vmlinuz-2.6.26-rc4-wl System.map-2.6.26-rc4-wl.old memtest86+-2.01 vmlinuz-2.6.26-rc4-wl.old [root@dv grub2]# As you can see, "grub-fstest /dev/sda1 ls /boot" fails to find any files. Then I patched grub with your patch. The output of the same command is attached (compressed). -- Regards, Pavel Roskin --=-EPV8MSuNs+dJ3M4BikmZ Content-Disposition: attachment; filename=Log-boot.bz2 Content-Type: application/x-bzip; name=Log-boot.bz2 Content-Transfer-Encoding: base64 QlpoOTFBWSZTWcrh7DYA5ZVZgEAQQAB/8D5PugBgbV8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAGgAAKAAaAAAoABoAACgAGgAAKAAaAAAKoECSl QA9TTE0+Q4fxt8l+S0k/iWkkpfJSl+S8l5L+JPkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkv kvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvnynyXyXyXyXyXz5R8k+S fJPknyXyTaXyT5J8k+S0l8k+SfJPkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvnynyXyXyXyXyXyXyXy XyXyXyXyXyXyXyXyXyT5Lr5R8laXz5T5L5L5L5L5L5L5L5L5J8l8l8+U+fKfJfJfJfJfJfJfJfJf JfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJfJPknyXyT5L5K 0rdS06lo+dNLebafNqUY0YbdUU00lti3XzHjq0tNMaSp1111086664800t1bimNKcUlTEtutHlvO utpddbdWtLTjaVNNOtsbaUdbW00w42ptht515aWnVPNJebdS602tbzzGMY864000622228224pS2 nW2222223GlOvJaJeMdWecS4thKnFNtuMNOMJLddbPJU0YSl55tK22NJWbRTbby1uvMNFHnGKUlZ J5jTrbG2mNOKdYo8tp5tSltseRaWPOutOKUpxSlNKU64xS0tttsYxK3SVvPJcR1o26l1511w6066 ljbzRx15KnHFPNMaMddbUY0t1LrrG3GKW04RtppbaUeScSaS8lxx5Y846txSikolKGmkqaSHG0qW k4lpKJStJi1PJUkpxSKS420s8l5KLSRx1wt1jxji1rRpKWNqRxppKVsSbSRiR1K0kSltilpJSRKS knFqUk0kbS0lERKQiEMcU8cUU6pCUkRG3FOJIPJYkHkohFJERtKEKY2tLjzTSXEvPEeJRsw6jH+j RpTqjqPnWKceOuJbSopRSnnmlJNMW6aU4aUpEUlLpt46kt8ojoxJhSWJbY2+dSaabYlp8cQ004W4 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 LTbzEpcLRSHjzim3mmKW448lbbzbzTrGnErfNJHyNrebUj55SkU0pG0kOtvPlOOuIxL5HnERJREf PLWiAt8xiUsRCOvlnWIgR0LSU6p8ojTaSg8lj4oli0dU04l18tx18s4t86eYiOrbWw4+WlxtGlJW bUoxRLTi1uPDTTqWnUaceQ0l11tLjxilupQja3Uutjq3DGPlPjG0reY24+OJW266+cFoafLS0pxj aVurRbra3yNNtuMfMeS46pt15K2HnHm2x8xiTjSTjxxjbynEpSlpbptEsY446W+eeSt80lb514aY U8lTEWtTrGj5L5xtHEo24l0p5LTrjSVvkoMaYlpRTrrbzRRT5p1Z104xj4cSdRLanG3yXmJeaYWc S0ikkaYpSURt0piXkiMWpAcULSfJcS6tSMPBK2PmlNutOJaeW4WiHHFulPOKMdYtxHR1JCXGlHm3 nmGnnGgxZ1wt4pEpMShJTTrTbzrrji2I6lLbqzFOqW+UfOIJeY02ptaPknHFNtOOsbbdcNtIMafK SpR80Y0xSVvikUw8t8jqTiHnkmlpfIeU8tSUvm2iyKeUpZo4lptppSTTjjzz582pt1TranVvNsW2 xLjTZLqG0vmlqW88+PnHnVto20tKnnyXC1NLfNMU2l864xTqTq23VtJfLfIlI+Slt5SnEtOlqS64 82t4ltTpZ882RtDy1JaUwxLamnWkpU20aeeU2t11ttptxa3ynWlscbW6pJLHGnFIU6pijDjzinHn WOOJWli1uLKU0xbBJtLa1rUtbymm0NrUcQ2008totL5xbrSzSIlLr4sLfNJbfOuuJbeQlIStT5aI xa0usbY20YkdaeeccccJWUiUjiW1qRhxRaXHFHzFIWkSlCUolKEpY04SxjSXFNo4aY6bbPnSzrza 3nFHkmko0+UiVGEWl5x18RwOMddeOPlPm3Gnmzranj8x+Pykuvz5px+YxLRbTHH5bhsoOjh+adUU 2xpbTrjrh1hK0pY0lxbEaYs60Y60lKSTpLrzhHkktpDhxbjFsedaY/JbNNMSsxtC0rPGlKPFKbfF mnzj5Lb5K3mPm3HzHFupUS8lxLEo0xTaktmxptSNLWtFHGkMG2LFKWwcYNqaFOoUOI8xDbw440x5 jrzzSXkpaRtTymJWUwkecUo2lo44pSUpYaRji0UWY2aLKebcU4jy1MdeYxp06aRbq1I4t5ZKVOvP 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 --=-EPV8MSuNs+dJ3M4BikmZ--