tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: VOP_PUTPAGE ignores mount_nfs -o soft,intr



On 19 Jun 2015, at 10:36, Emmanuel Dreyfus <manu%netbsd.org@localhost> 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 - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)



Home | Main Index | Thread Index | Old Index