The Linux IDE driver gets the geometry and capacity of a disk (and lots of other stuff) by using an ATA IDENTIFY request. Until recently the driver would not believe the returned value of lba_capacity if it was more than 10% larger than the capacity computed by C*H*S. However, recent Quantum Bigfoot 12 GB disks return C=16383, H=16, S=63, for a total of 16514064 sectors (7.8 GB) but give lba_capacity of 23547888 sectors (11.2 GB, that is, C=23361).
Recent Linux kernels (2.0.34pre14, 2.1.90) know about this
and do the right thing. If you have an older Linux kernel and do
not want to upgrade, and this kernel only sees 8 GB of a much larger disk,
then try changing the routine lba_capacity_is_ok
in
/usr/src/linux/drivers/block/ide.c
into something like
static int lba_capacity_is_ok (struct hd_driveid *id) {
id->cyls = id->lba_capacity / (id->heads * id->sectors);
return 1;
}
For a more cautious patch, see 2.1.90.