freebsd-nq/sys/vm
Matthew Dillon ac8f990bde This patch implements O_DIRECT about 80% of the way. It takes a patchset
Tor created a while ago, removes the raw I/O piece (that has cache coherency
problems), and adds a buffer cache / VM freeing piece.

Essentially this patch causes O_DIRECT I/O to not be left in the cache, but
does not prevent it from going through the cache, hence the 80%.  For
the last 20% we need a method by which the I/O can be issued directly to
buffer supplied by the user process and bypass the buffer cache entirely,
but still maintain cache coherency.

I also have the code working under -stable but the changes made to sys/file.h
may not be MFCable, so an MFC is not on the table yet.

Submitted by:	tegge, dillon
2001-05-24 07:22:27 +00:00
..
default_pager.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
device_pager.c Assert Giant is held for the device pager alloc and getpages methods since 2001-05-23 22:27:52 +00:00
phys_pager.c Set the phys_pager_alloc_lock to 1 when it is acquired so that it is 2001-05-23 19:52:23 +00:00
pmap.h Unrevert the pmap_map() changes. They weren't broken on x86. 2001-03-07 05:29:21 +00:00
swap_pager.c - Fix the sw_alloc_interlock to actually lock itself when the lock is 2001-05-23 22:31:15 +00:00
swap_pager.h - If swap metadata does not fit into the KVM, reduce the number of 2000-12-13 10:01:00 +00:00
vm_extern.h Remove unused 3rd argument from vsunlock() which abused B_WRITE. 2000-03-13 10:47:24 +00:00
vm_fault.c Take a more conservative approach and still lock Giant around VM faults 2001-05-23 22:09:18 +00:00
vm_glue.c - Lock the VM around the pmap_swapin_proc() call in faultin(). 2001-05-23 22:35:45 +00:00
vm_init.c Sort includes from previous commit. 2001-05-22 05:35:45 +00:00
vm_kern.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_kern.h Fix null-pointer dereference crash when the system is intentionally 2000-02-16 21:11:33 +00:00
vm_map.c - Add lots of vm_mtx assertions. 2001-05-23 22:38:00 +00:00
vm_map.h Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_meter.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_mmap.c - Obtain Giant in mmap() syscall while messing with file descriptors and 2001-05-23 22:17:43 +00:00
vm_object.c - Assert that the vm lock is held for all of _vm_object_allocate(). 2001-05-23 22:42:10 +00:00
vm_object.h Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_page.c This patch implements O_DIRECT about 80% of the way. It takes a patchset 2001-05-24 07:22:27 +00:00
vm_page.h This patch implements O_DIRECT about 80% of the way. It takes a patchset 2001-05-24 07:22:27 +00:00
vm_pageout.c - Add in several asserts of vm_mtx. 2001-05-23 22:48:28 +00:00
vm_pageout.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_pager.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_pager.h Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_param.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_swap.c Introduce per-swap area accounting in the VM system, and export 2001-02-23 18:46:21 +00:00
vm_unix.c Acquire Giant around vm_map_remove() inside of the obreak() syscall for 2001-05-23 22:13:10 +00:00
vm_zone.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vm_zone.h Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vm.h Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vnode_pager.c - Assert Giant is held in the vnode pager methods. 2001-05-23 22:51:23 +00:00
vnode_pager.h vnode_pager_freepage() is really vm_page_free() in disguise, 2001-04-19 06:18:23 +00:00