Re: vfat broken in 2.6.10?

From: Triffid Hunter
Date: Wed Mar 23 2005 - 19:24:15 EST


i've seen the same problems with a fat32 partition image after an unclean shutdown. reading certain files would cause the filesystem to spontaneously become read-only with error messages similar to the ones you list below.

my solution was to copy all the files off, rename the offending directory, and copy the relevant files back. unfortunately i can't remove the "dead" folder, as attempting to remove it sets the filesystem read-only :(

John Richard Moser wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm using Ubuntu Linux Hoary

root@icebox:~# uname -a
Linux icebox 2.6.10-5-686 #1 Tue Mar 15 15:16:01 UTC 2005 i686 GNU/Linux


root@icebox:~# fsck.vfat -r /dev/sda1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/\uffffSCK0000.REN
Duplicate directory entry.
First Size 0 bytes, date 19:03:36 Mar 04 1980
Second Size 0 bytes, date 19:00:00 Dec 31 1979
1) Drop first
2) Drop second
3) Rename first
4) Rename second
5) Auto-rename first
6) Auto-rename second
? 5
Renamed to FSCK0000.REN
Perform changes ? (y/n) y
/dev/sda1: 187 files, 167150/246288 clusters
root@icebox:~# fsck.vfat -r /dev/sda1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/dev/sda1: 187 files, 167150/246288 clusters

Now the FS is clean.

root@icebox:~# mount /dev/sda1 /media/usbdisk/
root@icebox:~# vim /media/usbdisk/a.txt
root@icebox:~# rm /media/usbdisk/a.txt

Created, deleted a.txt

root@icebox:~# umount /media/usbdisk/
root@icebox:~# fsck.vfat -r /dev/sda1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/\uffff.\000a\000.\000t.\000x\000
Bad file name.
1) Drop file
2) Rename file
3) Auto-rename
4) Keep it

Does that say a.txt?

? 1
/\uffffa\000.\000t\000x.\000t\000
Bad file name.
1) Drop file
2) Rename file
3) Auto-rename
4) Keep it
? 1
/\uffff.\000a\000.\000t.\000x\000
Start cluster beyond limit (7798784 > 246289). Truncating file.
/\uffff.\000a\000.\000t.\000x\000
File size is 4294967295 bytes, cluster chain length is 0 bytes.
Truncating file to 0 bytes.
/\uffffa\000.\000t\000x.\000t\000
Start cluster beyond limit (4294901760 > 246289). Truncating file.
/\uffffa\000.\000t\000x.\000t\000
File size is 4294967295 bytes, cluster chain length is 0 bytes.
Truncating file to 0 bytes.
/\uffff.TXT
Contains a free cluster (167160). Assuming EOF.
/\uffff.TXT
File size is 5 bytes, cluster chain length is 0 bytes.
Truncating file to 0 bytes.
Perform changes ? (y/n) y


I didn't pull the disk out at all, or anything. Just umounted and
remounted and made/removed a file. Also. . .


/dev/sda1: 189 files, 167150/246288 clusters
root@icebox:~# fsck.vfat -r /dev/sda1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/\uffff.\000a\000.\000t.\000x\000
Bad file name.
1) Drop file
2) Rename file
3) Auto-rename
4) Keep it
? 3
Renamed to FSCK0001.REN
/\uffffa\000.\000t\000x.\000t\000
Bad file name.
1) Drop file
2) Rename file
3) Auto-rename
4) Keep it
? 3
Renamed to FSCK0002.REN
Perform changes ? (y/n) y
/dev/sda1: 191 files, 167150/246288 clusters
root@icebox:~# fsck.vfat -r /dev/sda1
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/dev/sda1: 191 files, 167150/246288 clusters

It appears dosfsck may not be working quite right. I've taken this into
account, hence the second pass after each fsck. This is either a
dosfsck issue, a usb-storage issue for the PNY compact flash drive, or
an issue with vfat itself.

So either LKML needs to fix the drivers, or Ubuntu needs to upgrade/fix
dosfsck or some patch they've applied to the kernel.

- --
All content of all messages exchanged herein are left in the
Public Domain, unless otherwise explicitly stated.

Creative brains are a valuable, limited resource. They shouldn't be
wasted on re-inventing the wheel when there are so many fascinating
new problems waiting out there.
-- Eric Steven Raymond
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCQePohDd4aOud5P8RAhxRAJ9ydXWfLZbu0r/B4rY6zhaWScR3rQCfVNMY
lGsqNpIPDIBREqIWGVlQJFo=
=1Nlg
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

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