Felipe Alfaro Solana said:
On Tue, 2004-01-20 at 05:15, Gregory Gulik wrote:
> F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
> 1 D 0 11952 1 0 80 2 - 1341 wait_o ? 00:00:00
> gtar
This process is blocked waiting for I/O, so I can't be killed until the
I/O request is completed. This is something usual for processes which
use NFS: when the remote NFS dies or stops responding, the client
program stays at D and can't be killed.
I find the above very interesting, and it reminds me of the purpose of the
"MIH routine" in mainframe systems... MIH = Missing Interrupt Handler. In
mainframe parlance, if the "device end interrupt" got "lost", the
associated IO device would appear hung and no further IO to/from it would
occur. The MIH routine detects a "stalled device queue" and re-initiates
the IO. (Which may fail with an IO error, but that's OK, the error can be
processed.
Maybe Linuc needs an "MIH routine, especially for network devices.