freebsd-skq/sys/vm
kib 7ab18d4990 The vm_page_trysbusy() should not fail when shared busy counter or
VPB_BIT_WAITERS flag were changed between reading of busy_lock and the
cas.  The vm_page_sbusy(), which is the only user of
vm_page_trysbusy() in the tree, panics on the failure, which in these
cases is transient and do not mean that the current page state
prevents sbusying.

Retry the operation inside vm_page_trysbusy() if cas failed, only
return a failure when VPB_BIT_SHARED is cleared.

Reported and tested by:	pho
Reviewed by:	attilio
Sponsored by:	The FreeBSD Foundation
2013-09-05 12:54:40 +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
device_pager.c Different consumers of the struct vm_page abuse pageq member to keep 2013-08-10 17:36:42 +00:00
memguard.c - Add a statically allocated memguard arena since it is needed very early 2013-08-13 22:40:43 +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 Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
redzone.c
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 Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
swap_pager.h
uma_core.c Fix bug introduced in rewrite of keg_free_slab in -r251894. 2013-08-31 15:40:15 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h Different consumers of the struct vm_page abuse pageq member to keep 2013-08-10 17:36:42 +00:00
uma.h
vm_extern.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_fault.c On all the architectures, avoid to preallocate the physical memory 2013-08-09 11:28:55 +00:00
vm_glue.c Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
vm_init.c - Use an arbitrary but reasonably large import size for kva on architectures 2013-08-19 23:02:39 +00:00
vm_kern.c Add new mmap(2) flags to permit applications to request specific virtual 2013-08-16 21:13:55 +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 Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
vm_map.h Add new mmap(2) flags to permit applications to request specific virtual 2013-08-16 21:13:55 +00:00
vm_meter.c
vm_mmap.c Change the cap_rights_t type from uint64_t to a structure that we can extend 2013-09-05 00:09:56 +00:00
vm_object.c Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
vm_object.h On all the architectures, avoid to preallocate the physical memory 2013-08-09 11:28:55 +00:00
vm_page.c The vm_page_trysbusy() should not fail when shared busy counter or 2013-09-05 12:54:40 +00:00
vm_page.h Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +00:00
vm_pageout.c - Eliminate the vm object lock from the active queue scan. It is not 2013-08-21 22:39:19 +00:00
vm_pageout.h
vm_pager.c
vm_pager.h
vm_param.h Remove unused definition for CTL_VM_NAMES. 2013-08-09 23:47:43 +00:00
vm_phys.c Different consumers of the struct vm_page abuse pageq member to keep 2013-08-10 17:36:42 +00:00
vm_phys.h Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_radix.c Addendum to r254141: The call to vm_radix_insert() in vm_page_cache() can 2013-08-23 17:27:12 +00:00
vm_radix.h Addendum to r254141: The call to vm_radix_insert() in vm_page_cache() can 2013-08-23 17:27:12 +00:00
vm_reserv.c
vm_reserv.h
vm_unix.c
vm_zeroidle.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm.h
vnode_pager.c The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
vnode_pager.h