IDE hang, partition strangeness
Quoted 7 lines · Andrew Morton
Quoted 3 lines
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 [email protected]
Quoted 1 line · Petr Vandrovec
Hi, Petr. We're able to reproduce the ntpd thing btw. It is caused by cset 1.403.142.43 "avoid allocating pte_chains for unshared pages" - Rik is looking into it.
Quoted 11 lines · Andrew Morton
Quoted 7 lines
Quoted 3 lines
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' ?
There are no error messages.
Quoted 4 lines
If it did, just open
drivers/ide/ide.cin your favorite editor, locate functionata_error, in this function locate 'if (rq->errors>=ERROR_MAX)' and replace it with 'if (1)'...
Tried that - it made no difference.
It'd be convenient to get my IDE disks back. I'll try the 2.4 forward-port drivers.
Uz.ytkownik Andrew Morton napisa?:
Quoted 30 lines
Petr Vandrovec wrote:
Hi, Petr. We're able to reproduce the ntpd thing btw. It is caused by cset 1.403.142.43 "avoid allocating
pte_chainsfor unshared pages" - Rik is looking into it.Quoted 11 lines · Andrew Morton
Quoted 7 lines
Quoted 3 lines
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' ?
There are no error messages.
Quoted 4 lines
If it did, just open
drivers/ide/ide.cin your favorite editor, locate functionata_error, in this function locate 'if (rq->errors>=ERROR_MAX)' and replace it with 'if (1)'...
Quoted 4 lines
Tried that - it made no difference.
It'd be convenient to get my IDE disks back. I'll try the 2.4 forward-port drivers.
I thnik the sector calculation patch intriduced by the recent gendisk handling patches (in esp. not me) should fix this. I suppose that we are simply asking the drive to return more data then it contains.
I can of course try to introduce a band aid guard against such *pysical* mismatches in ide-disk.c. At least it should be possible to confirm the above hypothesis.