On Linux, processes that are stuck in D state (waiting on I/O) cannot be signaled. More specifically, the signal will be queued until the task exits that state. This includes signal 9.
The process may well never exit that state, for example if the I/O it's waiting for is actually over a networked filesystem and the NIC is misbehaving.
Have you seen anything in Linux that you can't kill with "kill -9"?