Linux, OS/2 and >1024 Cylinder HDDs

Last Updated: 11th February, 1995
From Tim Smith (tzs@u.washington.edu):

Some people have had Warp report that their partition map might be corrupt when trying to install on a disk that has Linux partitions. I may know one of the reasons. Warp and Linux disagree on how to denote cylinders above 1023 in the partition map.

Warp thinks that the cylinder field in the partition map should be min(1023,cylinder). Linux thinks that the proper value should be cylinder%1024. (Anyone happen to know what NT thinks?)

For cylinders >= 1024, these values will usually disagree.


Greg Hunt writes (9th November, 1995):

Early versions of Linux fdisk (before version 3) would write a partition table on disks with more than 1024 cylinders with the number of cylinders mod 1024. This could make a partition that ended beyond the 1024 cylinder point appear to have either a negative or very small size when the partition size was calulated from the cylinder,head and sector values in the partition table. The absolute sector values would however, be written correctly - these are what Linux (and apparently OS/2) use to access the partitions.

In this case, the OS/2 fdisk would report possible corruption of the partition table on the disk and would only allow partitions to be deleted until all partitions on the disk were eliminated. In my case this seemed to be because the OS/2 fdisk would find an extended partition that was smaller than the logical partitons that it contained. Rewriting the partition using linux fdisk version 3 (fdisk-3.03) fixed the problem because the cylinder number is written as 1023 for cylinder numbers greater than 1023 and, presumably, only the absolute sector value is then used by the OS/2 software.

My copy of the OS/2 2.0 PDD reference does not say how this should be handled, probably because the largest hard disk tested at the time that OS/2 2.0 was released was 400M.


Tim Smith (tzs@u.washington.edu)
The Warp Pharmacy