Re: Wrong free clusters count on FAT32

From: DervishD
Date: Thu Apr 19 2007 - 10:18:22 EST


Hi Juergen :)

* Juergen Beisert <juergen127@xxxxxxxxxxxxxx> dixit:
> On Thursday 19 April 2007 10:57, DervishD wrote:
> > I have a portable device with a FAT32 formatted hard disk in it, and
> > everytime I delete a file in the device *using the device itself to
> > do it* the device increases its count of free space and if I plug
> > the device in a Windows system, Windows agrees on the free space.
> > Linux doesn't. Linux believes that the files are still there
> > ocuppying space, and I have to run fsck.vfat to fix the problem.
>
> As I remember: It needs a large amount of time to calculate the free
> space on a big FAT32 system.

Big fat truth, I'm afraid. The thing is that I thought that Linux
did that from time to time to update the count. Obviously, doing it for
every statfs call would be very expensive :((

> So the last free sector count is also stored. When mounting this
> filesystem you don't need to walk through the whole FAT to calculate
> the available space, you can use this "cached" value instead. And this
> cached value seems not to be updated in your portable device.

It doesn't, certainly, but Windows doesn't care. Moreover, the
device doesn't seem to recalculate the value on every run (unless it
does it lightning fast!), so maybe the number is stored elsewhere (the
count can be stored in many places as far as I've read, but I don't know
the details).

A mount option to force walking the FAT and getting the real info
could be interesting. That way, it will be only done for certain devices
(small disks, for example).

Thanks for your answer :)

Raúl Núñez de Arenas Coronado

--
Linux Registered User 88736 | http://www.dervishd.net
It's my PC and I'll cry if I want to... RAmen!
-
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/