Hello!

Here's the patch with some cleanups and nice wrapped lines.  I leaving
out other fixes from e3.diff, they should be applied separately and
don't appear to be critical for my setup.

Changelog:

        * fs/ext2.c (grub_ext2_blockgroup): Call grub_fshelp_map_block()
        for the block that contains data for the requested group.

diff --git a/fs/ext2.c b/fs/ext2.c
index ffe9e33..f8642bb 100644
--- a/fs/ext2.c
+++ b/fs/ext2.c
@@ -257,12 +257,18 @@ inline static grub_err_t
 grub_ext2_blockgroup (struct grub_ext2_data *data, int group, 
                      struct grub_ext2_block_group *blkgrp)
 {
+  int blkno, blkoff;
+
+  blkoff = group * sizeof (struct grub_ext2_block_group);
+  blkno = blkoff >> (LOG2_EXT2_BLOCK_SIZE (data) + 9);
+  blkoff -= (blkno << (LOG2_EXT2_BLOCK_SIZE (data) + 9));
+  blkno += grub_le_to_cpu32 (data->sblock.first_data_block) + 1;
+
   return grub_disk_read (data->disk,
-                        (grub_fshelp_map_block (data->journal,
-                                                 grub_le_to_cpu32 
(data->sblock.first_data_block) + 1)
+                        (grub_fshelp_map_block (data->journal, blkno)
                          << LOG2_EXT2_BLOCK_SIZE (data)),
-                        group * sizeof (struct grub_ext2_block_group), 
-                        sizeof (struct grub_ext2_block_group), (char *) 
blkgrp);
+                        blkoff, sizeof (struct grub_ext2_block_group),
+                        (char *) blkgrp);
 }
 
 

-- 
Regards,
Pavel Roskin


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to