[PATCH] clipped disk reports clipped lba size

Eduardo Trápani
2002-01-30T14:56:56Z

[-- Attachment #1: Type: text/plain, Size: 681 bytes --]

Since my BIOS does not support my disk (WD400) I had to clip to 33.8G. At boot time Linux (2.4.17) uses the lba size reported by the disk, that is 33.8 and does not allow me to access the rest of the disk.

The problem is that even though the whole disk can be used after clipping, Linux uses only the reported lba size even if I force the geometry.

Here is a patch to solve that. I am sure there is a more elegant solution, I guess we could add a "lba_size=" or something like that as a boot parameter.

The patch against 2.4.17 does this: if the geometry has been forced then use it to calculate the lba size and ignore the (possibly clipped) answer from the disk.

Eduardo.

[-- Attachment #2: patch-clipped-ide.txt --]
[-- Type: text/plain, Size: 552 bytes --]

--- drivers/ide/ide-disk.c.orig Wed Jan 30 11:26:51 2002
+++ drivers/ide/ide-disk.c Wed Jan 30 11:30:26 2002
@@ -511,6 +511,12 @@

drive->select.b.lba = 0;

+ /* If the geometry has been forced recalculate lba_capacity */
+ if ((id->capability & 2) && lba_capacity_is_ok(id) &&
+ drive->forced_geom)
+ {
+ id->lba_capacity = drive->bios_head * drive->bios_sect * drive->bios_cyl;
+ }
/* Determine capacity, and use LBA if the drive properly supports it */
if ((id->capability & 2) && lba_capacity_is_ok(id)) {
capacity = id->lba_capacity;