freebsd-dev/sys/nfsclient
Paul Saab d54d263a79 Serialize NFS vinvalbuf operations by acquiring/upgrading to the
vnode EXCLUSIVE lock. This prevents threads from adding pages to
the vnode while an invalidation is in progress, closing potential
races. In the bioread() path, callers acquire the SHARED vnode lock
- so while an invalidate was in progress, it was possible to fault
in new pages onto the vnode causing the invalidation to take a while
or fail. We saw these races at Yahoo! with very large files+heavy
concurrent access. Forcing an upgrade to EXCLUSIVE lock before doing
the invalidation closes all these races.

Submitted by:	Mohan Srinivasan mohans at yahoo-inc dot com
2004-12-06 18:52:28 +00:00
..
bootp_subr.c Convert a GIANT_REQUIRED; into a NET_ASSERT_GIANT();, as sockets are 2004-12-05 22:50:09 +00:00
krpc_subr.c Convert GIANT_REQUIRED to NET_ASSERT_GIANT where Giant is used to 2004-06-16 03:12:50 +00:00
krpc.h
nfs_bio.c Serialize NFS vinvalbuf operations by acquiring/upgrading to the 2004-12-06 18:52:28 +00:00
nfs_diskless.c Move a relic to its correct location(s): Put nfs diskless initialization 2004-07-28 21:54:57 +00:00
nfs_lock.c For reasons unknown, the nfs locking code used a fifo to send requests to 2004-12-06 08:31:32 +00:00
nfs_lock.h For reasons unknown, the nfs locking code used a fifo to send requests to 2004-12-06 08:31:32 +00:00
nfs_nfsiod.c For reasons unknown, the nfs locking code used a fifo to send requests to 2004-12-06 08:31:32 +00:00
nfs_node.c Serialize NFS vinvalbuf operations by acquiring/upgrading to the 2004-12-06 18:52:28 +00:00
nfs_socket.c In nfs_timer(), pass curthread rather than &thread0 into the protocol 2004-08-25 01:23:38 +00:00
nfs_subs.c Add non-blocking versions of nfsm_dissect() and friends, for use from 2004-12-06 17:33:52 +00:00
nfs_vfsops.c Convert GIANT_REQUIRED; in nfs_mountroot() to NET_ASSERT_GIANT(), 2004-12-05 22:53:17 +00:00
nfs_vnops.c Serialize NFS vinvalbuf operations by acquiring/upgrading to the 2004-12-06 18:52:28 +00:00
nfs.h Correct a typo in a comment. 2004-12-06 16:11:25 +00:00
nfsargs.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
nfsdiskless.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
nfsm_subs.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
nfsmount.h NFS mobility PHASE I, II & III (phase VI, and V pending): 2004-07-06 09:12:03 +00:00
nfsnode.h Serialize NFS vinvalbuf operations by acquiring/upgrading to the 2004-12-06 18:52:28 +00:00
nfsstats.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
nlminfo.h