diff -urN --exclude=configure --exclude='*.in' --exclude='*.info' ./grub-0.93.orig/stage2/fsys_reiserfs.c ./grub-0.93/stage2/fsys_reiserfs.c
--- ./grub-0.93.orig/stage2/fsys_reiserfs.c	Fri Nov 29 20:46:01 2002
+++ ./grub-0.93/stage2/fsys_reiserfs.c	Tue May 27 13:55:41 2003
@@ -77,6 +77,7 @@
 #define REISERFS_MAX_SUPPORTED_VERSION 2
 #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
 #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
+#define REISER3FS_SUPER_MAGIC_STRING "ReIsEr3Fs"
 
 #define MAX_HEIGHT 7
 
@@ -112,7 +113,7 @@
   /* offset in the log of where to start replay after a crash */
   __u32 j_first_unflushed_offset;
   /* mount id to detect very old transactions */
-  __u32 long j_mount_id;
+  __u32 j_mount_id;
 };
 
 /* magic string to find desc blocks in the journal */
@@ -575,7 +576,8 @@
   if (part_length < superblock + (sizeof (super) >> SECTOR_BITS)
       || ! devread (superblock, 0, sizeof (struct reiserfs_super_block), 
 		(char *) &super)
-      || (substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) > 0
+      || (substring (REISER3FS_SUPER_MAGIC_STRING, super.s_magic) > 0
+	  && substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) > 0
 	  && substring (REISERFS_SUPER_MAGIC_STRING, super.s_magic) > 0)
       || (/* check that this is not a copy inside the journal log */
 	  super.s_journal_block * super.s_blocksize
@@ -588,7 +590,8 @@
 			(char *) &super))
 	return 0;
 
-      if (substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) > 0
+      if (substring (REISER3FS_SUPER_MAGIC_STRING, super.s_magic) > 0
+        && substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) > 0
 	  && substring (REISERFS_SUPER_MAGIC_STRING, super.s_magic) > 0)
 	{
 	  /* pre journaling super block ? */
@@ -1206,7 +1209,8 @@
   
   *start_sector = 1; /* reserve first sector for stage1 */
   if ((substring (REISERFS_SUPER_MAGIC_STRING, super.s_magic) <= 0
-       || substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) <= 0)
+       || substring (REISER2FS_SUPER_MAGIC_STRING, super.s_magic) <= 0
+       || substring (REISER3FS_SUPER_MAGIC_STRING, super.s_magic) <= 0)
       && (/* check that this is not a super block copy inside
 	   * the journal log */
 	  super.s_journal_block * super.s_blocksize 
