freebsd-dev/sys/nfsclient
Matthew Dillon 3ebeaf5984 This fixes a large number of bugs in our NFS client side code. A recent
commit by Kirk also fixed a softupdates bug that could easily be triggered
by server side NFS.

	* An edge case with shared R+W mmap()'s and truncate whereby
	  the system would inappropriately clear the dirty bits on
	  still-dirty data.  (applicable to all filesystems)

	  THIS FIX TEMPORARILY DISABLED PENDING FURTHER TESTING.
	  see vm/vm_page.c line 1641

	* The straddle case for VM pages and buffer cache buffers when
	  truncating.  (applicable to NFS client side)

	* Possible SMP database corruption due to vm_pager_unmap_page()
	  not clearing the TLB for the other cpu's.  (applicable to NFS
	  client side but could effect all filesystems).  Note: not
	  considered serious since the corruption occurs beyond the file
	  EOF.

	* When flusing a dirty buffer due to B_CACHE getting cleared,
	  we were accidently setting B_CACHE again (that is, bwrite() sets
	  B_CACHE), when we really want it to stay clear after the write
	  is complete.  This resulted in a corrupt buffer.  (applicable
	  to all filesystems but probably only triggered by NFS)

	* We have to call vtruncbuf() when ftruncate()ing to remove
	  any buffer cache buffers.  This is still tentitive, I may
	  be able to remove it due to the second bug fix.  (applicable
	  to NFS client side)

	* vnode_pager_setsize() race against nfs_vinvalbuf()... we have
	  to set n_size before calling nfs_vinvalbuf or the NFS code
	  may recursively vnode_pager_setsize() to the original value
	  before the truncate.  This is what was causing the user mmap
	  bus faults in the nfs tester program.  (applicable to NFS
	  client side)

	* Fix to softupdates (see ufs/ffs/ffs_inode.c 1.73, commit made
	  by Kirk).

Testing program written by: Avadis Tevanian, Jr.
Testing program supplied by: jkh / Apple (see Dec2001 posting to freebsd-hackers with Subject 'NFS: How to make FreeBS fall on its face in one easy step')
MFC after:	1 week
2001-12-14 01:16:57 +00:00
..
bootp_subr.c Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
krpc_subr.c Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
krpc.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nfs_bio.c This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
nfs_lock.c o Modify nfslockdans() to accept a thread reference instead of a proc 2001-11-14 18:20:45 +00:00
nfs_lock.h o Modify nfslockdans() to accept a thread reference instead of a proc 2001-11-14 18:20:45 +00:00
nfs_nfsiod.c o Modify nfslockdans() to accept a thread reference instead of a proc 2001-11-14 18:20:45 +00:00
nfs_node.c Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nfs_socket.c Make this compile after last commit. It should be: 2001-10-09 02:40:45 +00:00
nfs_subs.c Change the vnode list under the mount point from a LIST to a TAILQ 2001-10-23 01:21:29 +00:00
nfs_vfsops.c Allow users to use the 'nolockd' or -L options with mount_nfs in order 2001-11-12 02:33:52 +00:00
nfs_vnops.c This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
nfs.h This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
nfsargs.h Allow users to use the 'nolockd' or -L options with mount_nfs in order 2001-11-12 02:33:52 +00:00
nfsdiskless.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nfsm_subs.h Unwind some more macros. NFSMADV() was kinda silly since it was right 2001-09-28 04:37:08 +00:00
nfsmount.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nfsnode.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nfsstats.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00
nlminfo.h Cleanup and split of nfs client and server code. 2001-09-18 23:32:09 +00:00