Why does fsck.vfat throw “Contains a free cluster (8). Assuming EOF.”?

On a VFAT file system, you have a table named the FAT (File allocation table) which indicates for each cluster (group of several block) of the disk :

  • if the cluster is free or not ;
  • when the cluster belongs to a file, which is the next cluster.

Here, you have a file which is declared of size 4448713 bytes, and whose the first cluster is the 8th according to information from the directory it belongs. However, the FAT indicates that the cluster 8 is free which is inconsistent. Then fsck.vfat proposes you the truncate the file to size 0 which makes the file system consistent again.

You have typically this kind of behaviour if you eject physically a flash drive when Windows is writting something on it : it had the time to update the directory but not the FAT.