freebsd-nq/sys/nfsserver
David Malone dc6dd1259f Problem to avoid processes getting stuck in "vmopar". From Ian's
mail:

	The problem seems to originate with NFS's postop_attr
	information that is returned with a read or write RPC.
	Within a vm_fault context, the code cannot deal with
	vnode_pager_setsize() shrinking a vnode.

	The workaround in the patch below stops the nfsm_postop_attr()
	macro from ever shrinking a vnode. If the new size in the
	postop_attr information is smaller, then it just sets the
	nfsnode n_attrstamp to 0 to stop the wrong size getting
	used in the future. This change only affects postop_attr
	attributes; the nfsm_loadattr() macro works as normal.

	The change is implemented by adding a new argument to
	nfs_loadattrcache() called 'dontshrink'. When this is
	non-zero, nfs_loadattrcache() will never reduce the
	vnode/nfsnode size; instead it zeros n_attrstamp.

There remain other was processes can get stuck in vmopar.

Submitted by:	Ian Dowse <iedowse@maths.tcd.ie>
Reviewed by:	dillon
Tested by:	Vadim Belman <voland@lflat.org>
2000-10-24 10:13:36 +00:00
..
nfs_serv.c
nfs_srvcache.c
nfs_srvsock.c
nfs_srvsubs.c Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfs_syscalls.c
nfs.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfsm_subs.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfsproto.h
nfsrvcache.h
nfsrvstats.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00