On 19 Jun 2015, at 10:36, Emmanuel Dreyfus <m...@netbsd.org> wrote: > Hi > > I have encountered a bug with NetBSD NFS client. Despite a mount with > -o intr,soft, we can hit situation where a process can remain hang in > kernel because the NFS server is gone. > > This happens when the ioflush does its duty, with the following code path: > sync_fsync / nfs_sync / VOP_FSYNC / nfs_fsync / nfs_flush / VOP_PUTPAGES > > VOP_PUTPAGES has flags = PGO_ALLPAGES|PGO_FREE. It then goes through > genfs_putpages and genfs_do_putpages, and get stuck in: > > /* Wait for output to complete. */ > if (!wasclean && !async && vp->v_numoutput != 0) { > while (vp->v_numoutput != 0) > cv_wait(&vp->v_cv, slock); > }
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. -- J. Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)