freebsd-dev/sys/vm
Konstantin Belousov 3407fefef6 Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic
flags field. Updates to the atomic flags are performed using the atomic
ops on the containing word, do not require any vm lock to be held, and
are non-blocking. The vm_page_aflag_set(9) and vm_page_aflag_clear(9)
functions are provided to modify afalgs.

Document the changes to flags field to only require the page lock.

Introduce vm_page_reference(9) function to provide a stable KPI and
KBI for filesystems like tmpfs and zfs which need to mark a page as
referenced.

Reviewed by:    alc, attilio
Tested by:      marius, flo (sparc64); andreast (powerpc, powerpc64)
Approved by:	re (bz)
2011-09-06 10:30:11 +00:00
..
default_pager.c Replace pointer to "struct uidinfo" with pointer to "struct ucred" 2010-12-02 17:37:16 +00:00
device_pager.c Fix a race in the device pager allocation. If another thread won and 2011-07-30 14:13:57 +00:00
memguard.c Change memguard_fudge() so that it can handle km_max being zero. Not 2010-12-14 05:47:35 +00:00
memguard.h The realloc case for memguard(9) will copy too many bytes when 2010-08-31 16:57:58 +00:00
phys_pager.c Remove unneeded includes of <sys/linker_set.h>. Other headers that use 2011-01-11 13:59:06 +00:00
pmap.h Sort function prototypes. 2011-01-16 20:40:50 +00:00
redzone.c
redzone.h
sg_pager.c Eliminate duplication of the fake page code and zone by the device and sg 2011-03-11 07:07:48 +00:00
swap_pager.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
swap_pager.h Implement the linprocfs swaps file, providing information about the 2011-08-01 19:12:15 +00:00
uma_core.c Correct an error in r222163. Unless UMA_MD_SMALL_ALLOC is defined, 2011-05-22 17:46:16 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h 1. Prior to r214782, UMA did not support multipage allocations before 2011-05-21 17:43:43 +00:00
uma.h Change uma_zone_set_max to return the effective value of "nitems" after 2010-10-16 04:41:45 +00:00
vm_contig.c Fix an error in kmem_alloc_attr(). Unless "tries" is updated, 2011-08-07 00:11:39 +00:00
vm_extern.h Extract the code to translate VM error into errno, into an exported 2011-07-10 20:49:13 +00:00
vm_fault.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_glue.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
vm_init.c Introduce exec_alloc_args(). The objective being to encapsulate the 2010-07-27 17:31:03 +00:00
vm_kern.c - Move the PG_UNMANAGED flag from m->flags to m->oflags, renaming the flag 2011-08-09 21:01:36 +00:00
vm_kern.h
vm_map.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
vm_map.h - Merge changes to the base system to support OFED. These include 2011-03-21 09:40:01 +00:00
vm_meter.c Fix some locking nits with the p_state field of struct proc: 2011-03-24 18:40:11 +00:00
vm_mmap.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_object.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_object.h Add a new option, OBJPR_NOTMAPPED, to vm_object_page_remove(). Passing this 2011-06-29 16:40:41 +00:00
vm_page.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_page.h Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_pageout.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vm_pageout.h vm_pageout_flush() might cache the pages that finished write to the 2010-11-18 21:09:02 +00:00
vm_pager.c Move the definition of M_VMPGDATA to the swap pager, where the only 2011-01-18 04:54:43 +00:00
vm_pager.h Move the definition of M_VMPGDATA to the swap pager, where the only 2011-01-18 04:54:43 +00:00
vm_param.h On Alan's advice, rather than do a wholesale conversion on a single 2010-04-30 00:46:43 +00:00
vm_phys.c Explicitly wire the user buffer rather than doing it implicitly in 2011-01-27 00:34:12 +00:00
vm_phys.h Very rough first cut at NUMA support for the physical page allocator. For 2010-07-27 20:33:50 +00:00
vm_reserv.c Explicitly wire the user buffer rather than doing it implicitly in 2011-01-27 00:34:12 +00:00
vm_reserv.h
vm_unix.c All the racct_*() calls need to happen with the proc locked. Fixing this 2011-07-06 20:06:44 +00:00
vm_zeroidle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
vm.h Replace pointer to "struct uidinfo" with pointer to "struct ucred" 2010-12-02 17:37:16 +00:00
vnode_pager.c Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic 2011-09-06 10:30:11 +00:00
vnode_pager.h In the VOP_PUTPAGES() implementations, change the default error from 2011-06-01 21:00:28 +00:00