freebsd-dev/sys/vm
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
..
default_pager.c
device_pager.c
phys_pager.c
pmap.h
swap_pager.c Don't use an uninitialized field reserved for callers in the bio structure 2001-10-15 23:02:54 +00:00
swap_pager.h
vm_contig.c contigmalloc1() could cause the vm_page_zero_count to become incorrect. 2001-10-17 17:34:34 +00:00
vm_extern.h Move the code that computes the system load average from vm_meter.c 2001-10-20 13:10:43 +00:00
vm_fault.c Fix deadlock introduced in 1.73 (Jan 1998). The paging-in-progress count 2001-11-09 21:34:45 +00:00
vm_glue.c
vm_init.c
vm_kern.c vm/vm_kern.c: rate limit (to once per second) diagnostic printf when 2001-12-01 00:21:30 +00:00
vm_kern.h
vm_map.c Don't let pmap_object_init_pt() exhaust all available free pages 2001-10-31 03:06:33 +00:00
vm_map.h Don't let pmap_object_init_pt() exhaust all available free pages 2001-10-31 03:06:33 +00:00
vm_meter.c Move the code that computes the system load average from vm_meter.c 2001-10-20 13:10:43 +00:00
vm_mmap.c
vm_object.c Move recently added procedure which was incorrectly placed within an 2001-10-26 16:27:54 +00:00
vm_object.h Implement kern.maxvnodes. adjusting kern.maxvnodes now actually has a 2001-10-26 00:08:05 +00:00
vm_page.c This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
vm_page.h
vm_pageout.c Syntax cleanup and documentation, no operational changes. 2001-10-21 06:12:06 +00:00
vm_pageout.h
vm_pageq.c
vm_pager.c
vm_pager.h
vm_param.h
vm_swap.c
vm_unix.c
vm_zeroidle.c
vm_zone.c When laying out objects in a ZONE_INTERRUPT zone, allow them to cross 2001-11-17 00:40:48 +00:00
vm_zone.h
vm.h
vnode_pager.c This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
vnode_pager.h