There is a bug in the dosfsck utility (part of dosfstools) which causes the following behaviour:
# dosfsck /dev/mmcd/disc0/part1
dosfsck 2.9 (15 May 2003)
dosfsck 2.9, 15 May 2003, FAT32, LFN
Logical sector size is zero.The fixed version shows this output instead:
# dosfsck /dev/mmcd/disc0/part1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/dev/mmcd/disc0/part1: 0 files, 0/34603 clustersTo fix the bug I had to apply the following patch to the dosfstools source code:
diff -rNu dosfstools-2.10.orig/dosfsck/boot.c dosfstools-2.10/dosfsck/boot.c
--- dosfstools-2.10.orig/dosfsck/boot.c    2003-06-15 08:03:20.000000000 +1200
+++ dosfstools-2.10/dosfsck/boot.c    2004-10-16 14:59:27.000000000 +1300
@@ -34,13 +34,13 @@
     { 0xff, "5.25\" 320k floppy 2s/40tr/8sec" },
 };
 
-#if defined __alpha || defined __ia64__ || defined __s390x__ || defined __x86_64__ || defined __ppc64__
+#if defined __alpha || defined __ia64__ || defined __s390x__ || defined __x86_64__ || defined __ppc64__ || __arm__
 /* Unaligned fields must first be copied byte-wise */
 #define GET_UNALIGNED_W(f)      \
     ({      \
  unsigned short __v;      \
  memcpy( &__v, &f, sizeof(__v) );    \
-    CF_LE_W( *(unsigned short *)&f );    \
+    CF_LE_W( *(unsigned short *)&__v );    \
     })
 #else
 #define GET_UNALIGNED_W(f) CF_LE_W( *(unsigned short *)&f )This patch is available from 
http://beer.geek.nz/software/zaurus/dosfstools/I got the idea for the fix from this 
Debian bug report.
You can download the fixed dosfstools ipk from 
my unstable feed.