I tell fsck to fix USB stick, it says "Leaving file system unchanged."
So I run fsck, and it reports
FATs differ but appear to be intact. Use which FAT ?
1) Use first FAT
2) Use second FAT
Choosing either one gives a long list of errors like
Cluster 1471730 out of range (164977891 > 1980013). Setting to EOF.
Cluster 1471732 out of range (252397720 > 1980013). Setting to EOF.
Cluster 1471734 out of range (18601458 > 1980013). Setting to EOF.
Then it says,
Reclaimed 93886 unused clusters (769114112 bytes).
Free cluster summary wrong (1034047 vs. really 1221912)
1) Correct
2) Don't correct
If I choose (1), it just exits with no action:
Leaving file system unchanged.
/dev/sdb1: 53 files, 758100/1980012 clusters
So how do I fix this?
After unmounting the USB volume, you'll want to use fsck with the '-w' switch which forces fsck to immediately write changes. Note that '-w' requires '-a' (auto mode) or '-r' (interactive mode).
man fsck.vfat says:
Note: If -a and -r are absent, the filesystem is only checked, but not repaired.
So, to have it actually write your changes use either -a or -r. The -w option modifies the behaviour of those two.
Look at the fsck man page. Maybe try -r option or leave the -n if you used it.
Another possibility is that the partition is completely full. Check this.
By the way, it would be very helpful to post the exactly command that you used.