From f52590bd495fabcae83546f0e0c447421ce99285 Mon Sep 17 00:00:00 2001 From: Michal Minar Date: Wed, 1 Sep 2010 05:57:39 +0000 Subject: grub 0.97: fixing broken 256byte-inodes patch * original patch causes termination of grub with floating point exception, when operating upon ext2 partitions * the bug description came from: http://bugs.gentoo.org/show_bug.cgi?id=220687 * fixed patch was done by RB Signed-off-by: Michal Minar Signed-off-by: Khem Raj --- .../grub/grub-0.97/grub-support-256byte-inode.diff | 21 +++++++++++++-------- recipes/grub/grub_0.97.bb | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/recipes/grub/grub-0.97/grub-support-256byte-inode.diff b/recipes/grub/grub-0.97/grub-support-256byte-inode.diff index bef3bc18e7..caaf9d6b62 100644 --- a/recipes/grub/grub-0.97/grub-support-256byte-inode.diff +++ b/recipes/grub/grub-0.97/grub-support-256byte-inode.diff @@ -1,7 +1,7 @@ -diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c ---- a/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200 -+++ b/stage2/fsys_ext2fs.c 2008-01-30 14:27:20.000000000 +0100 -@@ -79,7 +79,52 @@ struct ext2_super_block +diff -Naur grub-0.97-800/stage2/fsys_ext2fs.c grub-0.97-810/stage2/fsys_ext2fs.c +--- grub-0.97-800/stage2/fsys_ext2fs.c 2008-07-21 00:40:21.668879475 -0600 ++++ grub-0.97-810/stage2/fsys_ext2fs.c 2008-07-21 01:01:11.063953773 -0600 +@@ -79,7 +79,52 @@ __u32 s_rev_level; /* Revision level */ __u16 s_def_resuid; /* Default uid for reserved blocks */ __u16 s_def_resgid; /* Default gid for reserved blocks */ @@ -55,17 +55,22 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c }; struct ext2_group_desc -@@ -218,6 +263,9 @@ struct ext2_dir_entry +@@ -218,6 +263,14 @@ #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) -+#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size) ++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ ++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ ++#define EXT2_GOOD_OLD_INODE_SIZE 128 ++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_INODE_SIZE : \ ++ (s)->s_inode_size) +#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) + /* linux/ext2_fs.h */ #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) /* kind of from ext2/super.c */ -@@ -553,7 +601,7 @@ ext2fs_dir (char *dirname) +@@ -553,7 +606,7 @@ gdp = GROUP_DESC; ino_blk = gdp[desc].bg_inode_table + (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group)) @@ -74,7 +79,7 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c #ifdef E2DEBUG printf ("inode table fsblock=%d\n", ino_blk); #endif /* E2DEBUG */ -@@ -565,13 +613,12 @@ ext2fs_dir (char *dirname) +@@ -565,13 +618,12 @@ /* reset indirect blocks! */ mapblock2 = mapblock1 = -1; diff --git a/recipes/grub/grub_0.97.bb b/recipes/grub/grub_0.97.bb index 98691c1c38..eab4ad698c 100644 --- a/recipes/grub/grub_0.97.bb +++ b/recipes/grub/grub_0.97.bb @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/grub" SECTION = "bootloaders" PRIORITY = "optional" RDEPENDS_${PN}-install = "diffutils" -PR = "r6" +PR = "r7" SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz \ file://automake-1.10.patch \ -- cgit v1.2.3