freebsd-skq/sys/vm
Konstantin Belousov 95c4bf756a Provide mutual exclusion between zone allocation/destruction and
uma_reclaim().  Reclamation code must not see half-constructed or
destructed zones.  Do this by bracing uma_zcreate() and uma_zdestroy()
into a shared-locked sx, and take the sx exclusively in uma_reclaim().

Usually zones are not created/destroyed during the system operation,
but tmpfs mounts do cause zone operations and exposed the bug.

Another solution could be to only expose a new keg on uma_kegs list
after the corresponding zone is fully constructed, and similar
treatment for the destruction.  But it probably requires more risky
code rearrangement as well.

Reported and tested by:	pho
Discussed with:	avg
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2014-11-30 20:20:55 +00:00
..
_vm_radix.h On all the architectures, avoid to preallocate the physical memory 2013-08-09 11:28:55 +00:00
default_pager.c Fix mis-spelling of bits and types names in the 2014-11-04 19:56:04 +00:00
device_pager.c Initialize paddr to handle the case of zero size. 2014-03-12 16:38:55 +00:00
memguard.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
memguard.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
phys_pager.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
pmap.h Change pmap_enter(9) interface to take flags parameter and superpage 2014-08-08 17:12:03 +00:00
redzone.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
redzone.h
sg_pager.c Different consumers of the struct vm_page abuse pageq member to keep 2013-08-10 17:36:42 +00:00
swap_pager.c \n at end of panicstr is redundant. 2014-11-23 18:32:21 +00:00
swap_pager.h Do not map the swap i/o pbufs if the geom provider for the swap 2013-03-19 14:39:27 +00:00
uma_core.c Provide mutual exclusion between zone allocation/destruction and 2014-11-30 20:20:55 +00:00
uma_dbg.c - Add a per-zone lock for zones without kegs. 2013-06-20 19:08:12 +00:00
uma_dbg.h
uma_int.h Implement soft pressure on UMA cache bucket sizes. 2013-11-19 10:05:53 +00:00
uma.h Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
vm_extern.h Handle wiring failures in vm_map_wire() with the new functions 2014-08-02 16:10:24 +00:00
vm_fault.c Make MAP_NOSYNC handling in the vm_fault() read-locked object path 2014-10-10 19:27:36 +00:00
vm_glue.c Add kernel option KSTACK_USAGE_PROF to sample the stack depth on 2014-10-04 18:38:14 +00:00
vm_init.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
vm_kern.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
vm_kern.h - Add a statically allocated memguard arena since it is needed very early 2013-08-13 22:40:43 +00:00
vm_map.c vm_map_pmap_enter() and pmap_enter_object() are currently not aware of 2014-09-23 18:54:23 +00:00
vm_map.h Oops. vm_map_simplify_entry() is used by mac_proc_vm_revoke_recurse(), so 2014-09-08 02:25:01 +00:00
vm_meter.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
vm_mmap.c Retire the unimplemented MAP_RENAME and MAP_NORESERVE flags to mmap(2). 2014-10-18 12:28:51 +00:00
vm_object.c When unwiring a region of an address space, do not assume that the 2014-07-26 18:10:18 +00:00
vm_object.h Update a stale comment. 2014-09-11 03:16:57 +00:00
vm_page.c Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the default 2014-11-15 23:40:44 +00:00
vm_page.h Adapt vm_page_aflag_set(PGA_WRITEABLE) to the locking of 2014-08-09 05:00:34 +00:00
vm_pageout.c Refactor ZFS ARC reclaim checks and limits 2014-10-03 20:34:55 +00:00
vm_pageout.h Move what remains of vm/vm_contig.c into vm/vm_pageout.c, where similar 2012-07-18 05:21:34 +00:00
vm_pager.c Avoid an exclusive acquisition of the object lock on the expected execution 2014-09-14 18:07:55 +00:00
vm_pager.h Merge from projects/sendfile: 2014-11-23 12:01:52 +00:00
vm_param.h Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
vm_phys.c Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the default 2014-11-15 23:40:44 +00:00
vm_phys.h Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the default 2014-11-15 23:40:44 +00:00
vm_radix.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
vm_radix.h Eliminate a redundant parameter to vm_radix_replace(). 2013-12-08 20:07:02 +00:00
vm_reserv.c By the time that vm_reserv_init() runs, vm_phys_segs[] is initialized. Use 2014-11-22 17:46:30 +00:00
vm_reserv.h Refactor vm_page_alloc()'s interactions with vm_reserv_alloc_page() and 2013-05-12 16:50:18 +00:00
vm_unix.c Remove ia64. 2014-07-07 00:27:09 +00:00
vm_zeroidle.c Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
vm.h rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
vnode_pager.c We already have "int i" in this scope. 2014-11-24 07:57:20 +00:00
vnode_pager.h Merge from projects/sendfile: 2014-11-23 12:01:52 +00:00