Linux leaking space on FAT partitions!

Callum Lerwick (lerwick@tcfreenet.org)
Thu, 02 Dec 1999 06:42:38 -0600


All right, I've noticed an odd bug in at least the latest release
kernels. Free space seems to be 'leaking' on FAT partitions. I'm not
sure exactly when it started, its a slow and gradual thing... I've
noticed this in at least 2.2.12, which I'd been running for some months,
I recently upgraded to 2.2.13, just before this finally registered in my
mind as a serious problem when I needed some space for mastering a CD
burn...

(don't take the size values as gospel...)
It got to the point where windows was saying there was 1.4gb free on my
FAT32 D: partition, and Linux was insisting there was 270mb. I did a cat
/dev/zero >/Ddos/foo which filled the 270mb space Linux thought there
was, went to windows, It said there was 1.2 gb free, I ran Norton
Scandisk, no complaints, I duplicated the foo file until there was 210mb
left, went back to Linux, now it says there's 210mb free, deleted the
foo files, 1.4gb free. Did a cp /dev/zero>foo again, filled the 1.4 gb,
while I was at it, I filled my FAT16 C: too. Went back to windows, it
now agrees there's no disk space left on D:, however there's a few
hundred mb of leaked space on C:. So its not just FAT32. I went back to
Linux and deleted foo on D:, yay, now I seem to have my full 1.4gb back.
I was then able to burn the CD...

Norton has never complained about either partition, other than the usual
lost clusters after windows crashes and burns... I've never had any
problem accessing files under Linux or Windows, or noticed any corrupt
files, so doesn't seem to be a serious data loss situation. Since it has
persisted over many many reboots, and a few different kernels, it must
be something in the way Linux is interperating the FAT filesystem...

Its still happening, a day or two later I tested and found about 160k
leaked on D:... I've searched the list, and nothing even close seems to
have been mentioned before... Am I the only one seeing this? I know some
C, but this is too big for me... Help me oh kernel wizards. :)

This is a multiboot Windows 95 OSR2/RedHat 6.1 box, not* overclocked
Celeron 333/Abit BH6... My dmesg:

Linux version 2.2.13 (root@bigtime.local) (gcc version egcs-2.91.66
19990314/Linux (egcs-1.1.2 release)) #2 Fri Nov 26 19:06:21 CST 1999
Detected 334095234 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 333.41 BogoMIPS
Memory: 128500k/131072k available (624k kernel code, 416k reserved,
1500k data, 32k init)
CPU: Intel Celeron (Mendocino) stepping 00
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
pty: 256 Unix98 ptys configured
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.9)
Real Time Clock Driver v1.09
PIIX4: IDE controller on PCI bus 00 dev 39
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA
hda: Maxtor 90843D4, ATA DISK drive
hdb: FX320M, ATAPI CDROM drive
hdc: PHILIPS PCA460RW, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: Maxtor 90843D4, 8047MB w/512kB Cache, CHS=1025/255/63, UDMA
Partition check:
hda: hda1 hda2 hda3 < hda5 >
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 32k freed

I have FAT compiled as a module...

Module Size Used by
es1371 23840 1 (autoclean)
soundcore 2148 4 (autoclean) [es1371]
nfsd 150040 8 (autoclean)
lockd 30760 1 (autoclean) [nfsd]
sunrpc 51876 1 (autoclean) [nfsd lockd]
tulip 25252 1 (autoclean)
nls_iso8859-1 2020 2 (autoclean)
nls_cp437 3548 2 (autoclean)
vfat 9116 2 (autoclean)
fat 29952 2 (autoclean) [vfat]

mount:

/dev/hda1 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda2 on /Cdos type vfat (rw,uid=500,umask=022)
/dev/hda5 on /Ddos type vfat (rw,uid=500,umask=022)
none on /dev/pts type devpts (rw,gid=5,mode=620)

fdisk:

Disk /dev/hda: 255 heads, 63 sectors, 1025 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 131 1052226 83 Linux
/dev/hda2 132 392 2096482+ 6 FAT16
/dev/hda3 393 1025 5084572+ 5 Extended
/dev/hda5 393 1024 5076508+ b Win95 FAT32

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