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.

Reply via email to