On 1 Aug 02 at 23:56, Andrew Morton wrote:
> >
> > Seems that the partitioning code in 2.5.30 is sending illegal LBAs
> > to the IDE driver, which responds by hanging the box:
>
> I misread this backtrace:
>
> _this_ is the lba. 160086527. It is the very last sector on the disk.
Did not it issued an error on the console before that? Something
like 'hda: xxxx: status=YY' ? If it did, just open
drivers/ide/ide.c in your favorite editor, locate function ata_error,
in this function locate 'if (rq->errors >= ERROR_MAX)' and replace
it with 'if (1)'...
Problem is that current IDE code does not start retry, although it
thinks that it started it - so code waits for something to happen,
without timer set up, and without xxx->handler set to anything, so
even if something will happen (spurious interrupt), it will not awake.
Changing condition to '1' will force IDE driver to fail operation
immediately, and so channel will not deadlock (put it in another
way: any time current ata_error returns ATA_OP_CONTINUES, you just
lost your IDE channel with kernels >= 2.5.27 (at least)).
Petr Vandrovec
vandrove@vc.cvut.cz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed Aug 07 2002 - 22:00:18 EST