Hi,
I have done extensive research on the FAT16 file system. I have found no
evidence that there exists a limit (other than physical disk capacity) for
the number of partitions that FAT16 supports. That is, from a strict FAT16
design point of view, once the primary partition is created and defined, any
number of extended partitions, up to the maximum partition size limitation
of roughly 2 GB, can be created and accessed.
Granted, this assessment relies on the fact that there are typically several
places that C/H/S (cylinder/head/sector) get converted to LBA and
vice-versa. This depends on the ATA drive, BIOS, and OS.
Fom a CE.NET point of view, the implementation of the FSD/FSDM/PartManager
could limit the number of partitions based on some arbitrary value.
Although I did not find any such limitation while digging through the
FSD/FSDM/PartManager code, I could have missed it. Does anyone know of a
limitation to the number of partitions that the CE.NET file system subsystem
imposes? If so, what is it?
I have a few that I can think of (again no proof).
1. Since all file systems are mounted under the root, there could be a
limitation due to the maximum number of folders allowed off of the root.
This could be imposed by the storage manager or the FSDM.
2. Assuming that the Partition Manger enumerates all the links in the FAT
chain, my guess is that for CE.NET, there could be an upper limit somewhere
between 62 and 68 because of the so-called 137 MB limitation imposed by most
modern ATA devices. 137 MB is a result of using 28 bits for sector
addressing (note: ATA-6 defines 48 bits). So, depending on how big you make
the partition (somewhere between 2 and 2.2 GB) you'll end up with a number
between 62 and 68.
3. Hardware BIOS limitations. Certain BIOS implementations could not be
providing extended int 13 disk services. Int 13 is x86 based. I don't know
how other processors (specifically ARM) provide BIOS disk support. Any
additional information on this would be helpful.
Thanks,
Nick.