No subject

Tue Jun 4 12:17:20 MDT 2013

     12.1 IDE problems with 34+ GB disks

     (Below a discussion of Linux kernel problems. BIOS problems and
     jumpers that clip capacity were discussed above.)

     Drives larger than 33.8 GB will not work with kernels older than
     2.2.14 / 2.3.21. The details are as follows. Suppose you bought a
     new IBM-DPTA-373420 disk with a capacity of 66835440 sectors (34.2
     GB). Pre-2.3.21 kernels will tell you that the size is 769*16*63 =
     775152 sectors (0.4 GB), which is a bit disappointing.

     And giving command line parameters hdc=4160,255,63 doesn't help at
     all - these are just ignored. What happens? The routine
     idedisk_setup() retrieves the geometry reported by the disk (which
     is 16383/16/63) and overwrites what the user specified on the
     command line, so that the user data is used only for the BIOS
     geometry. The routine current_capacity() or idedisk_capacity()
     recomputes the cylinder number as 66835440/(16*63)=66305, but since
     this is stored in a short, it becomes 769. Since
     lba_capacity_is_ok() destroyed id->cyls, every following call to it
     will return false, so that the disk capacity becomes 769*16*63. For
     several kernels a patch is available. A patch for 2.0.38 can be
     found at A patch for 2.2.12 can be found at (some editing may be required to get rid of
     the html markup). The 2.2.14 kernels do support these disks. In the
     2.3.* kernel series, there is support for these disks since 2.3.21.
     One can also `solve' the problem in hardware by using a jumper to
     clip the size to 33.8 GB. In many cases a BIOS upgrade will be
     required if one wants to boot from the disk.


More information about the LUG mailing list