Re: My SCSI HD has 34 heads, not 255...

Thomas E Zerucha (zerucha@shell.portal.com)
Sun, 16 Jun 1996 17:55:32 -0700 (PDT)


On Sun, 16 Jun 1996 Andries.Brouwer@cwi.nl wrote:

> Linux will ask the controller about the geometry it has invented
> or invent something itself. There can never be any guarantee
> to be `right'. But when you have several operating systems
> on the same disk, or if you use the same disk on several
> controllers, you may have to invent your own reality and tell
> all systems that differ explicitly about your choice.
>
> That is why you can give lilo and fdisk explicit CHS information.
>
> If you have an explicit proposal on how to make fdisk do the right
> thing more often - i.e., look at the partition table and guess
> what disk geometry you would like to go with that - then such
> sugestions are welcome.
>

The main problem is that the "invented" geometery should correspond to the
values provided by the BIOS, or other OS driver, or there is little point
in having the system call.

What my patch did is access a routine that would scan the partition table
and usually guess right about the disk geometery - since most schemes
would end on cylinder boundaries, the "end" values would have the total
number of sectors and heads as perceived by the BIOS. With those two
values and the total capacity you can determine the total cylinders.
So if a valid partition table already exists (with the tests for the
signature bytes), it could be used to superceed the value of the system
call.

The routine (in linux/drivers/scsi/scsicam.c) could be cloned or adapted
or the function implemented in fdisk (all flavors) and lilo.

I would suggest this technique (use any values from a preexisting
partition table first, call HD_GETGEO second) be used for automatic
determination.

zerucha@shell.portal.com ; finger zerucha@jobe.portal.com for PGP key