freebsd-dev/sys/vm
Mark Johnston eeacb3b02f Merge the vm_page hold and wire mechanisms.
The hold_count and wire_count fields of struct vm_page are separate
reference counters with similar semantics.  The remaining essential
differences are that holds are not counted as a reference with respect
to LRU, and holds have an implicit free-on-last unhold semantic whereas
vm_page_unwire() callers must explicitly determine whether to free the
page once the last reference to the page is released.

This change removes the KPIs which directly manipulate hold_count.
Functions such as vm_fault_quick_hold_pages() now return wired pages
instead.  Since r328977 the overhead of maintaining LRU for wired pages
is lower, and in many cases vm_fault_quick_hold_pages() callers would
swap holds for wirings on the returned pages anyway, so with this change
we remove a number of page lock acquisitions.

No functional change is intended.  __FreeBSD_version is bumped.

Reviewed by:	alc, kib
Discussed with:	jeff
Discussed with:	jhb, np (cxgbe)
Tested by:	pho (previous version)
Sponsored by:	Netflix
Differential Revision:	https://reviews.freebsd.org/D19247
2019-07-08 19:46:20 +00:00
..
_vm_radix.h
default_pager.c
device_pager.c Add a return value to vm_page_remove(). 2019-06-26 17:37:51 +00:00
memguard.c Add a vm_page_wired() predicate. 2019-06-02 01:00:17 +00:00
memguard.h
phys_pager.c
pmap.h correct pmap_ts_referenced return type 2019-07-03 19:59:56 +00:00
redzone.c
redzone.h
sg_pager.c
swap_pager.c A style-related change, r349791, made unclear the meaning of a 2019-07-07 06:57:04 +00:00
swap_pager.h
uma_core.c Replace uses of vm_page_unwire(m, PQ_NONE) with vm_page_unwire_noq(m). 2019-06-07 18:23:29 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h
uma.h
vm_domainset.c
vm_domainset.h
vm_extern.h
vm_fault.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_glue.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_init.c
vm_kern.c Replace uses of vm_page_unwire(m, PQ_NONE) with vm_page_unwire_noq(m). 2019-06-07 18:23:29 +00:00
vm_kern.h
vm_map.c Move an assignment, drop a label, and change gotos to break statements 2019-07-04 19:25:30 +00:00
vm_map.h Revert r349393, which leads to an assertion failure on bootup, in vm_map_stack_locked. 2019-06-26 03:12:57 +00:00
vm_meter.c Provide separate accounting for user-wired pages. 2019-05-13 16:38:48 +00:00
vm_mmap.c Control implicit PROT_MAX() using procctl(2) and the FreeBSD note 2019-07-02 19:07:17 +00:00
vm_object.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_object.h
vm_page.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_page.h Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_pageout.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_pageout.h Provide separate accounting for user-wired pages. 2019-05-13 16:38:48 +00:00
vm_pagequeue.h Add a per-CPU page cache per VM free pool. 2019-07-08 18:56:30 +00:00
vm_pager.c
vm_pager.h
vm_param.h
vm_phys.c The function vm_phys_free_contig invokes vm_phys_free_pages for every 2019-05-31 21:02:42 +00:00
vm_phys.h The function vm_phys_free_contig invokes vm_phys_free_pages for every 2019-05-31 21:02:42 +00:00
vm_radix.c
vm_radix.h
vm_reserv.c The means of finding ranges of free pages was changed for 2019-06-06 16:28:34 +00:00
vm_reserv.h Retire vm_reserv_extend_{contig,page}(). These functions were introduced 2019-06-03 05:15:36 +00:00
vm_swapout_dummy.c
vm_swapout.c Merge the vm_page hold and wire mechanisms. 2019-07-08 19:46:20 +00:00
vm_unix.c Provide separate accounting for user-wired pages. 2019-05-13 16:38:48 +00:00
vm.h
vnode_pager.c Fix style(9) violations involving division by PAGE_SIZE. 2019-07-06 15:55:16 +00:00
vnode_pager.h