freebsd-nq/sys/vm
Konstantin Belousov 7a4b2bc56c 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 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
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 Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +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 Remove the deprecated VM_ALLOC_RETRY flag for the vm_page_grab(9). 2013-08-22 07:39:53 +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 Fix bug introduced in rewrite of keg_free_slab in -r251894. 2013-08-31 15:40:15 +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 Different consumers of the struct vm_page abuse pageq member to keep 2013-08-10 17:36:42 +00:00
uma.h - Resolve bucket recursion issues by passing a cookie with zone flags 2013-06-26 00:57:38 +00:00
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 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
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 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 - Add a general purpose resource allocator, vmem, from NetBSD. It was 2013-06-28 03:51:20 +00:00
vm_pager.h - Add a general purpose resource allocator, vmem, from NetBSD. It was 2013-06-28 03:51:20 +00:00
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 Refactor vm_page_alloc()'s interactions with vm_reserv_alloc_page() and 2013-05-12 16:50:18 +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 - Improve readability of sys_obreak(). 2013-01-11 09:58:35 +00:00
vm_zeroidle.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +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 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 Account the writeable shared mappings backed by file in the vnode 2012-02-23 21:07:16 +00:00