Date: Mon, 22 Jun 2015 16:10:54 +0000 From: Emmanuel Dreyfus <m...@netbsd.org>
On Mon, Jun 22, 2015 at 05:27:49PM +0200, J. Hannken-Illjes wrote: > Looks like your problem is the missing nfs aware implementation of > function nfs_node.c:nfs_gop_write(). Falling back to genfs_gop_write() > ignores nfs timeouts. The problem also exists with failed hard disks, where filesystem cannot be forcibly unmounted because a write does not complete. Therefore the problem deserves to be resolved in genfs. The basic problem is that we are abusing an rwlock for I/O blocking. rwlocks and mutexes are intended for short-term waits on computation, not long-term waits on I/O. The right thing to do is to drop the rwlock while we wait for I/O, just as we drop the vmobjlock and set PG_BUSY while we do I/O for a page.