Messages in this thread |  | | Date | Thu, 27 Sep 2001 20:24:35 +0200 | From | Jan Hudec <> | Subject | Suggest TASK_KILLABLE state to overcome most D state trouble |
| |
Hello,
I am develpoing a network filesystem and I come across the problem with noninteruptible waiting (the same as with NFS). Unfortunately there are some cases, where waiting interuptibly and returning ERESTARTSYS is difficult to imposible to do (when upcall is done, it must be remembered, for the restarted syscall, but the syscall may not get restarted).
I can see 2 ways out for most cases.
The simpler one: add a TASK_KILLABLE state, that would be between INTERUPTIBLE and NONINTERUPTIBLE. It could be interupted only with SIGKILL (I first thought SIGSTOP too but that one shouldn't matter). In that case the syscall knows it's canceled. I think most waiting in D state can be changed to be killable. Mainly when handling page-fault (which may wait on network, that is even indefinitely in case of failure). It won't make the system behave very nicely in case of network failure, but would at least allow killing locked processes.
The more complicated would be to change the signal handling to allow hook to be called when the syscall won't be restarted so the driver could get rid of now invalid state information.
Does a patch adding a TASK_KILLABLE state have a chance to get in (in 2.5)? Or can anybody thik of more elegant solution?
-------------------------------------------------------------------------------- - Jan Hudec `Bulb' <bulb@ucw.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/
|  |