More data on VFAT mount error 'fat_read_super: Bad fsinfo_offset'

Ben McCann (bmccann@indusriver.com)
Sat, 02 Jan 1999 13:50:38 +0000


I'm running 2.2.0pre3 and like several other folks, I'm getting
the error 'fat_read_super: Bad fsinfo_offset' on an otherwise
healthy(1) win95 vfat filesystem.

I made the following change:

diff -u inode.c.bad inode.c
--- inode.c.bad Sat Jan 2 08:32:01 1999
+++ inode.c Sat Jan 2 08:34:02 1999
@@ -365,9 +365,15 @@
MSDOS_SB(sb)->fsinfo_offset =
CF_LE_W(b->info_sector) * logical_sector_size + 0x1e0;
if (MSDOS_SB(sb)->fsinfo_offset + sizeof(MSDOS_SB(sb)->fsinfo_offset) >=
sizeof(struct fat_boot_sector)) {
+#if 0
printk("fat_read_super: Bad fsinfo_offset\n");
fat_brelse(sb, bh);
goto out_invalid;
+#else
+ printk("fat_read_super: Bad fsinfo_offset %d >= %d\n",
+ MSDOS_SB(sb)->fsinfo_offset +
+ sizeof(MSDOS_SB(sb)->fsinfo_offset),
+ sizeof(struct fat_boot_sector));
+#endif
}
fsinfo = (struct fat_boot_fsinfo *)
&bh->b_data[MSDOS_SB(sb)->fsinfo_offset];

This lets the VFAT-32 mount proceed but it displays the fsinfo offset and
the length of the fat_boot_sector. This new message displayed:

fat_read_super: Bad fsinfo_offset 996 >= 64

I don't know the intent of this change but it was introduced sometime after
2.1.131ac9 (the last kernel I've used regularly). The underlying filesystem
seems fine (I can do ls, df, etc) so it appears this sanity test is faulty.

-Ben McCann

1. Perhaps 'healthy' is overly generous but Windoze scandisk is happy....

-- 
---
Ben McCann                              Indus River Networks
                                        31 Nagog Park
                                        Acton, MA, 01720
email: bmccann@indusriver.com           web: www.indusriver.com 
phone: (978) 266-8140                   fax: (978) 266-8111

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/