Re: fat32 all upper-case filename problem

From: James Vega
Date: Mon Apr 05 2004 - 14:43:22 EST


Marco Roeland wrote:
You forgot a 'ls /usbdrive' *before* the 'touch'. Now we don't know
whether it was empty before. We'll assume so.

Sorry. Yes, the directory was empty before the 'touch'.

debil% touch /usbdrive/CASE
debil% ls /usbdrive
case


This suggests that you've mounted your usbdrive (vfat probably?)
_specifically_ with the option to force lowercase filenames. The default
is to preserve the case of the filename (to the filename *should* be CASE here)
and to see both names as equals.

Here is the output from the 'mount' command:

/dev/sda1 on /usbdrive type vfat (rw,noexec,nosuid,nodev,uid=1000,gid=1000)

AFAIK, I did nothing to force lowercase filenames.

Another possibility is that there *was* already a file called 'case' and
that the actual writing of the 'CASE' file in the directory is postponed
until some sort of 'sync' operation. This also would need a
specific 'case-sensitive' mount option.


debil% ls /usbdrive/CASE
/usbdrive/CASE
debil% ls /usbdrive/case
/usbdrive/case


The above normally can only happen if there really are *two* files, one
name 'case' and the other 'CASE'. So a case sensitive filesystem.

There was only one file as shown by the ls output above. Also, the few people that I have asked to reproduce this are always able to ls both 'case' and 'CASE' even after a remount or waiting for the cached entry to expire.

debil% umount /usbdrive && mount /usbdrive
debil% ls /usbdrive/case
/usbdrive/case
debil% ls /usbdrive/CASE
ls: /usbdrive/CASE: No such file or directory


Looks like you have mounted the thing with case-sensitiviy *and* forcing
lowercase filenames always. Either there is a bug in the combination,
or perhaps there is a bug in that the uppercase name is cached for some
time in VFS until the lowercase name is reread from the usbdrive?

Again, I'm not knowingly specifying either case-sensitivity or forced lowercase filenames. The line in /etc/fstab is as follows:
/dev/sda1 /usbdrive auto (rw,noexec,nosuid,nodev,uid=1000,gid=1000) 0 0

When you test this please be very careful to reproduce every start and
end condition *exactly*. <Bad pun alert> It's very easy to look at
Heisenbugs here, with all these virtual filenames in case space. </Bad
pun alert>

Thank you for the suggestions. I'll keep these in mind for future testing.

Attachment: signature.asc
Description: OpenPGP digital signature