Comment 44 for bug 1237519

Revision history for this message
Brandon Hansen (bhansen-n) wrote :

I've been looking at the HDIO_GETGEO ioctl a bit, and it may be worth a discussion with those who have more information as to its usefulness. Particularly, the notes about the IOCTL say:

"Not particularly useful with modern disk drives, whose geometry
is a polite fiction anyway. Modern drives are addressed
purely by sector number nowadays (lba addressing), and the
drive geometry is an abstraction which is actually subject
to change. Currently (as of Nov 2004), the geometry values
are the "bios" values -- presumably the values the drive had
when Linux first booted.

In addition, the cylinders field of the hd_geometry is an
unsigned short, meaning that on most architectures, this
ioctl will not return a meaningful value on drives with more
than 65535 tracks.

The start field is unsigned long, meaning that it will not
contain a meaningful value for disks over 219 Gb in size."

It is this last paragraph about the start sector value that is most concerning to me since it is the start sector value that is needed for this ticket. From what I could gather, it appears that people lean toward Phillip Susi's suggestion of going the sysfs route.

I did come across the mention of another IOCTL called BLKPG_GET_PARTITION, but I couldn't find any good documentation on it to assess its usefulness for our purposes. Does anyone have any input on this ioctl or know where I can find good documentation?

Finally, it is worth mentioning that RHEL works with our devices and installs grub without any problems. From what I understand, they use Grub 0.97 (probably patched many times) and the grub error from this ticket does not happen with them. There is the potential that one of these patches uses the sysfs method that is needed here. If anyone has some experience in RHEL, they may be able to offer some input here, but this may be a worthy avenue to explore.