PATCH: 2.6.10 - Still mishandles volumes without geometry data

From: Alan Cox
Date: Mon Dec 27 2004 - 10:02:09 EST


An IDE device can choose not to report geometry. In this situation the
base 2.6 kernel tries to verify the LBA data despite having nothing to
validate it against and prints it out (although now only as pr_debug).

This patch fixes these problems and has in various forms been in
2.6.9-ac and Fedora Core for a considerable time now

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.10/drivers/ide/ide-disk.c linux-2.6.10/drivers/ide/ide-disk.c
--- linux.vanilla-2.6.10/drivers/ide/ide-disk.c 2004-12-25 21:15:34.000000000 +0000
+++ linux-2.6.10/drivers/ide/ide-disk.c 2004-12-26 21:55:43.084714368 +0000
@@ -84,6 +84,10 @@
{
unsigned long lba_sects, chs_sects, head, tail;

+ /* No non-LBA info .. so valid! */
+ if (id->cyls == 0)
+ return 1;
+
/*
* The ATA spec tells large drives to return
* C/H/S = 16383/16/63 independent of their size.
@@ -201,7 +205,8 @@
head = track % drive->head;
cyl = track / drive->head;

- pr_debug("%s: CHS=%u/%u/%u\n", drive->name, cyl, head, sect);
+ if(drive->bios_cyl)
+ pr_debug("%s: CHS=%u/%u/%u\n", drive->name, cyl, head, sect);

hwif->OUTB(0x00, IDE_FEATURE_REG);
hwif->OUTB(nsectors.b.low, IDE_NSECTOR_REG);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/