freebsd-nq/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
default_pager.c Fix mis-spelling of bits and types names in the 2014-11-04 19:56:04 +00:00
device_pager.c
memguard.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
memguard.h
phys_pager.c
pmap.h
redzone.c
redzone.h
sg_pager.c
swap_pager.c \n at end of panicstr is redundant. 2014-11-23 18:32:21 +00:00
swap_pager.h
uma_core.c Provide mutual exclusion between zone allocation/destruction and 2014-11-30 20:20:55 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h
uma.h
vm_extern.h
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
vm_kern.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
vm_kern.h
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
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
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
vm_pageout.c Refactor ZFS ARC reclaim checks and limits 2014-10-03 20:34:55 +00:00
vm_pageout.h
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
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
vm_radix.h
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
vm_unix.c
vm_zeroidle.c
vm.h
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