freebsd-dev/sys/nfs
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
..
bootp_subr.c Correctly set the Maximum DHCP Message Size. bootpd now works 2000-06-13 09:32:09 +00:00
krpc_subr.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
krpc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nfs_bio.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
nfs_common.c Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfs_common.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfs_node.c Add missed vop_stdunlock() for fifo's vnops (this affects only v2 mounts). 2000-10-15 08:01:28 +00:00
nfs_nqlease.c Convert lockmgr locks from using simple locks to using mutexes. 2000-10-04 01:29:17 +00:00
nfs_serv.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
nfs_socket.c Add a sysctl to specify the amount of UDP receive space NFS should 2000-03-27 21:38:35 +00:00
nfs_srvcache.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
nfs_subs.c Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfs_syscalls.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
nfs_vfsops.c Don't scan for the "right" network interface by shooting in the dark. 2000-09-05 22:29:36 +00:00
nfs_vnops.c Make nfs PDIRUNLOCK aware. Now it is possible to use nullfs mounts on top 2000-10-15 08:06:32 +00:00
nfs.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfsdiskless.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nfsm_subs.h Problem to avoid processes getting stuck in "vmopar". From Ian's 2000-10-24 10:13:36 +00:00
nfsmount.h Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
nfsnode.h Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
nfsproto.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nfsrtt.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nfsrvcache.h Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
nfsv2.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nqnfs.h Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
rpcv2.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
xdr_subs.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00