freebsd-nq/sys/vm
Mark Johnston 7585c5db25 uma: Fix handling of reserves in zone_import()
Kegs with no items reserved have uk_reserve = 0.  So the check
keg->uk_reserve >= dom->ud_free_items will be true once all slabs are
depleted.  Then, rather than go and allocate a fresh slab, we return to
the cache layer.

The intent was to do this only when the keg actually has a reserve, so
modify the check to verify this first.  Another approach would be to
make uk_reserve signed and set it to -1 until uma_zone_reserve() is
called, but this requires a few casts elsewhere.

Fixes:	1b2dcc8c54 ("uma: Avoid depleting keg reserves when filling a bucket")
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32516
2021-11-01 09:51:43 -04:00
..
_vm_phys.h vm_phys: Try to clean up NUMA KPIs 2020-11-19 03:59:21 +00:00
_vm_radix.h
default_pager.c vm_object_kvme_type(): reimplement by embedding kvme_type into pagerops 2021-05-13 20:10:35 +03:00
device_pager.c vm_object_kvme_type(): reimplement by embedding kvme_type into pagerops 2021-05-13 20:10:35 +03:00
memguard.c vm: clean up empty lines in .c and .h files 2020-09-01 21:20:45 +00:00
memguard.h
phys_pager.c vm_object_kvme_type(): reimplement by embedding kvme_type into pagerops 2021-05-13 20:10:35 +03:00
pmap.h Add pmap_enter(9) PMAP_ENTER_LARGEPAGE flag and implement it on amd64. 2020-09-09 21:50:24 +00:00
redzone.c redzone: Raise a compile error if KASAN is configured 2021-07-23 10:47:13 -04:00
redzone.h
sg_pager.c vm_object_kvme_type(): reimplement by embedding kvme_type into pagerops 2021-05-13 20:10:35 +03:00
swap_pager.c Externalize nsw_cluster_max and initialize it early. 2021-09-28 11:23:52 -07:00
swap_pager.h forward declare struct thread 2021-10-11 12:59:39 -06:00
uma_core.c uma: Fix handling of reserves in zone_import() 2021-11-01 09:51:43 -04:00
uma_dbg.c
uma_dbg.h
uma_int.h Improve UMA cache reclamation. 2021-05-02 19:45:23 -04:00
uma.h Remove some remaining references to VM_ALLOC_NOOBJ 2021-10-19 21:22:56 -04:00
vm_domainset.c Add interruptible variant of vm_wait(9), vm_wait_intr(9). 2020-09-08 23:28:09 +00:00
vm_domainset.h Add interruptible variant of vm_wait(9), vm_wait_intr(9). 2020-09-08 23:28:09 +00:00
vm_dumpset.h Avoid dump_avail[] redefinition. 2020-10-14 22:51:40 +00:00
vm_extern.h Add vnode_pager_purge_range(9) KPI 2021-08-05 22:52:26 +08:00
vm_fault.c vm_fault: Stop specifying VM_ALLOC_ZERO 2021-10-19 21:22:56 -04:00
vm_glue.c uma: Add KMSAN hooks 2021-08-10 21:27:54 -04:00
vm_init.c Make MAXPHYS tunable. Bump MAXPHYS to 1M. 2020-11-28 12:12:51 +00:00
vm_kern.c Convert vm_page_alloc() callers to use vm_page_alloc_noobj(). 2021-10-19 21:22:56 -04:00
vm_kern.h
vm_map.c setrlimit: Take stack gap into account. 2021-10-15 10:21:47 +02:00
vm_map.h setrlimit: Take stack gap into account. 2021-10-15 10:21:47 +02:00
vm_meter.c Use atomic loads/stores when updating td->td_state 2021-02-18 14:02:48 +00:00
vm_mmap.c Add OBJT_SWAP_TMPFS pager 2021-05-07 17:08:03 +03:00
vm_object.c sysctl vm.objects: yield if hog 2021-10-25 20:34:02 +03:00
vm_object.h vm: add another pager private flag 2021-05-15 20:47:29 +00:00
vm_page.c vm_page: Break reservations to handle noobj allocations 2021-10-22 09:25:59 -04:00
vm_page.h Remove some remaining references to VM_ALLOC_NOOBJ 2021-10-19 21:22:56 -04:00
vm_pageout.c Fix a few typos in source code comments 2021-08-14 09:06:09 +02:00
vm_pageout.h Add interruptible variant of vm_wait(9), vm_wait_intr(9). 2020-09-08 23:28:09 +00:00
vm_pagequeue.h vm_phys: Try to clean up NUMA KPIs 2020-11-19 03:59:21 +00:00
vm_pager.c amd64: Populate the KMSAN shadow maps and integrate with the VM 2021-08-10 21:27:53 -04:00
vm_pager.h vm: Add KPI to dynamically register pagers 2021-05-13 20:12:29 +03:00
vm_param.h
vm_phys.c minidump: De-duplicate is_dumpable() 2021-09-29 16:41:52 -03:00
vm_phys.h minidump: De-duplicate is_dumpable() 2021-09-29 16:41:52 -03:00
vm_radix.c vm: clean up empty lines in .c and .h files 2020-09-01 21:20:45 +00:00
vm_radix.h
vm_reserv.c vm_reserv: Fix list locking in vm_reserv_reclaim_contig() 2021-03-11 10:35:35 -05:00
vm_reserv.h
vm_swapout_dummy.c
vm_swapout.c Make vmdaemon timeout configurable 2021-10-17 13:49:29 +01:00
vm_unix.c Prepare to handle non-trivial errors from vm_map_delete(). 2020-09-09 21:34:31 +00:00
vm.h tmpfs: dynamically register tmpfs pager 2021-05-13 20:13:34 +03:00
vnode_pager.c Add vnode_pager_purge_range(9) KPI 2021-08-05 22:52:26 +08:00
vnode_pager.h