kernel patch support large fat partitions

From: Vijay Kumar (
Date: Thu Jan 03 2002 - 18:42:20 EST


This is regarding a change I had to make to the kernel 2.2.17-14 to support
really large drives. In our project we deal with huge drives, sometimes
drives larger than 128GB. The file system is FAT32 and only one partition
is create on any drive. During our testing we realized that linux fat
implementation doesn't support partitions larger than 128GB(actually 64GB
because of a bug in fat implementation).

This limitation is imposed by the data structures used by the linux fat
implementation to read/write directory entries. A 'long' data type is used
to access directory entries on the disk, of which only 28 bits are used to
identify the sector that contains the directory entry and the rest 4 bits
are used to specify offset of the directory entry inside the sector. Using
28 bits to identify a sector means we cannot access sectors beyond 128GB
(2^28*512), thus limiting us from creating partitions larger than 128GB on
large disk drives.

I have made changes to fat, vfat and msdos file system implementations in
the kernel to use larger data types, thus allowing us to create larger
partitions. As per the GPL I would like to make the patch available to
everyone and also in case somebody has run into the same problem(who cares
about fat in the linux world). The patch has been fairly well tested only
on our systems(p3, 700MHz with FC). I truly appreciate if you & anybody in
the kernel mailing list have any feedback about the changes.

The patch is applicable to only 2.2.17-14 kernel and may require changes to
use with other kernel versions. As far as I know none of the kernel
versions provide any fix for this problem.

- Vijay

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Mon Jan 07 2002 - 21:00:23 EST