grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ~3TB ext4 volume not read correctly by ext2-fs driver in GRUB2


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: ~3TB ext4 volume not read correctly by ext2-fs driver in GRUB2
Date: Wed, 24 Feb 2010 11:49:36 +0100
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20091109)

Try attached patch
Tony Vroon wrote:
> Ladies and gentlemen,
>
> It would appear that the ext2-fs driver is not reliably able to read
> directories on my ~3TB / filesystem:
> /dev/root             3.4T  1.7T  1.6T  52% /
> /dev/root on / type ext4 (rw,noatime,barrier=1,data=ordered)
>
> Whilst doing some troubleshooting over IRC, I was given a debug patch.
> With this patch applied, I'll show you a working directory entry (/etc)
> and a non-working directory entry (/boot):
> prometheus ~ # grub-fstest -d ext2 -v /dev/sda3 ls /etc
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:651: iterating inode size=4096 mode=0x41ed
> fs/ext2.c:688: got filename: '.', type 2
> fs/ext2.c:862: grub_fshelp_dir returning: 0
> fs/ext2.c:651: iterating inode size=4096 mode=0x41ed
> fs/ext2.c:688: got filename: '.', type 2
> fs/ext2.c:688: got filename: '..', type 2
> fs/ext2.c:688: got filename: 'lost+found', type 2
> fs/ext2.c:688: got filename: 'lib', type 7
> fs/ext2.c:688: got filename: '.config', type 1
> fs/ext2.c:688: got filename: 'sbin', type 2
> fs/ext2.c:688: got filename: 'root', type 2
> fs/ext2.c:688: got filename: 'mnt', type 2
> fs/ext2.c:688: got filename: 'opt', type 2
> fs/ext2.c:688: got filename: 'var', type 2
> fs/ext2.c:688: got filename: 'usr', type 2
> fs/ext2.c:688: got filename: 'dev', type 2
> fs/ext2.c:688: got filename: 'lib32', type 2
> fs/ext2.c:688: got filename: 'home', type 2
> fs/ext2.c:688: got filename: 'tmp', type 2
> fs/ext2.c:688: got filename: 'media', type 2
> fs/ext2.c:688: got filename: 'sys', type 2
> fs/ext2.c:688: got filename: 'cvs', type 2
> fs/ext2.c:688: got filename: 'proc', type 2
> fs/ext2.c:688: got filename: 'etc', type 2
> fs/ext2.c:651: iterating inode size=0 mode=0x0
> fs/ext2.c:862: grub_fshelp_dir returning: 0
>
> prometheus ~ # grub-fstest -d ext2 -v /dev/sda3 ls /boot
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:862: grub_fshelp_dir returning: 9
> fs/ext2.c:651: iterating inode size=4096 mode=0x41ed
> fs/ext2.c:688: got filename: '.', type 2
> fs/ext2.c:862: grub_fshelp_dir returning: 0
> fs/ext2.c:651: iterating inode size=4096 mode=0x41ed
> fs/ext2.c:688: got filename: '.', type 2
> fs/ext2.c:688: got filename: '..', type 2
> fs/ext2.c:688: got filename: 'lost+found', type 2
> fs/ext2.c:688: got filename: 'lib', type 7
> fs/ext2.c:688: got filename: '.config', type 1
> fs/ext2.c:688: got filename: 'sbin', type 2
> fs/ext2.c:688: got filename: 'root', type 2
> fs/ext2.c:688: got filename: 'mnt', type 2
> fs/ext2.c:688: got filename: 'opt', type 2
> fs/ext2.c:688: got filename: 'var', type 2
> fs/ext2.c:688: got filename: 'usr', type 2
> fs/ext2.c:688: got filename: 'dev', type 2
> fs/ext2.c:688: got filename: 'lib32', type 2
> fs/ext2.c:688: got filename: 'home', type 2
> fs/ext2.c:688: got filename: 'tmp', type 2
> fs/ext2.c:688: got filename: 'media', type 2
> fs/ext2.c:688: got filename: 'sys', type 2
> fs/ext2.c:688: got filename: 'cvs', type 2
> fs/ext2.c:688: got filename: 'proc', type 2
> fs/ext2.c:688: got filename: 'etc', type 2
> fs/ext2.c:688: got filename: 'lib64', type 2
> fs/ext2.c:688: got filename: 'boot', type 2
> fs/ext2.c:651: iterating inode size=0 mode=0x0
> fs/ext2.c:862: grub_fshelp_dir returning: 0
>
> In order to help troubleshoot this, I can apply patches on top of
> current SVN, run fstest & test booting for you. Please note that making
> images of a 3TB drive is not practical and will not reflect the real
> situation to you.
> Sorry, but I am not comfortable offering SSH access to random internet
> strangers.
>
> Regards,
> Tony V.
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel
>   


-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko

=== modified file 'fs/ext2.c'
--- fs/ext2.c   2010-01-20 08:12:47 +0000
+++ fs/ext2.c   2010-02-24 10:48:31 +0000
@@ -436,7 +436,8 @@
       grub_uint32_t indir[blksz / 4];
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (inode->blocks.indir_block)
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (inode->blocks.indir_block))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;
@@ -452,13 +453,15 @@
       grub_uint32_t indir[blksz / 4];
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (inode->blocks.double_indir_block)
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (inode->blocks.double_indir_block))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (indir[rblock / perblock])
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (indir[rblock / perblock]))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]