freebsd-dev/sys/vm
Konstantin Belousov 9815066425 Make swapoff reliable.
The swap_pager_swapoff() function uses trylock for the object lock
before pagein, which means that either i/o to md(4) over swap, or
intensive page faults over swap pager objects might prevent swapoff()
from making any progress. Then the retry < 100 check fails and machine
panics.

If trylock fails, acquire the object lock in the blockable way and
restart the hash bucket walk.  Keep retries logic for now.

Reported and tested by:	pho
Reviewed by:	alc, markj
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
Differential revision:	https://reviews.freebsd.org/D7688
2016-08-31 14:49:58 +00:00
..
_vm_radix.h
default_pager.c A change to KPI of vm_pager_get_pages() and underlying VOP_GETPAGES(). 2015-12-16 21:30:45 +00:00
device_pager.c Avoid duplicated calls to pmap_page_get_memattr(). 2016-05-01 17:48:43 +00:00
memguard.c Include sys/_task.h into uma_int.h, so that taskqueue.h isn't a 2016-02-09 20:22:35 +00:00
memguard.h
phys_pager.c sys: use our roundup2/rounddown2() macros when param.h is available. 2016-04-21 19:57:40 +00:00
pmap.h
redzone.c
redzone.h
sg_pager.c Plug a vm_page leak introduced in r292373. 2016-02-05 19:35:53 +00:00
swap_pager.c Make swapoff reliable. 2016-08-31 14:49:58 +00:00
swap_pager.h
uma_core.c Release the second critical section in uma_zfree_arg() slightly earlier. 2016-07-20 01:01:50 +00:00
uma_dbg.c Fix memguard(9) in kernels with INVARIANTS enabled. 2016-06-01 22:31:35 +00:00
uma_dbg.h Move uma_dbg_alloc() and uma_dbg_free() into uma_core.c, which allows 2016-02-03 22:02:36 +00:00
uma_int.h Autotune the number of pages set aside for UMA startup based on the number 2016-07-07 18:37:12 +00:00
uma.h Replace a number of conflations of mp_ncpus and mp_maxid with either 2016-07-06 14:09:49 +00:00
vm_domain.c Move vm_domain_rr_selectdomain() under #ifdef VM_NUMA_ALLOC. 2016-05-10 22:25:55 +00:00
vm_domain.h
vm_extern.h Various cleanups to the main function for AIO kernel processes: 2016-01-19 21:37:51 +00:00
vm_fault.c Add a comment describing the 'fast path' that was introduced in r270011. 2016-07-20 17:20:22 +00:00
vm_glue.c Eliminate unneeded vm_page_xbusy() and vm_page_xunbusy() operations when 2016-08-14 22:00:45 +00:00
vm_init.c
vm_kern.c Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
vm_kern.h
vm_map.c Change the type of the map entry's next_read field from a vm_pindex_t to a 2016-07-07 20:58:16 +00:00
vm_map.h Change the type of the map entry's next_read field from a vm_pindex_t to a 2016-07-07 20:58:16 +00:00
vm_meter.c The vmtotal sysctl handler marks active vm objects to calculate 2016-06-21 17:49:33 +00:00
vm_mmap.c When mmap(2) is used with a vnode, capture vnode attributes in the 2016-07-10 11:49:10 +00:00
vm_object.c Replace all remaining calls to vprint(9) with vn_printf(9), and remove 2016-08-10 16:12:31 +00:00
vm_object.h The vmtotal sysctl handler marks active vm objects to calculate 2016-06-21 17:49:33 +00:00
vm_page.c Restore swap pager readahead after r292373. 2016-08-30 05:56:21 +00:00
vm_page.h Add a comment noting locking regime for vm_page_xunbusy(). 2016-06-23 08:27:38 +00:00
vm_pageout.c Correct errors and clean up the comments on the active queue scan. 2016-08-12 03:22:58 +00:00
vm_pageout.h The flag "vm_pages_needed" has long served two distinct purposes: (1) to 2016-05-27 19:15:45 +00:00
vm_pager.c Remove slightly used const values that can be replaced with nitems(). 2016-04-21 15:38:28 +00:00
vm_pager.h A change to KPI of vm_pager_get_pages() and underlying VOP_GETPAGES(). 2015-12-16 21:30:45 +00:00
vm_param.h
vm_phys.c Initialize page busy lock state in vm_phys_add_page(). 2016-08-13 19:48:43 +00:00
vm_phys.h Add more fine-grained kernel options for NUMA support. 2016-04-09 13:58:04 +00:00
vm_radix.c Cleanup redundant parenthesis from existing howmany()/roundup() macro uses. 2016-04-22 16:57:42 +00:00
vm_radix.h
vm_reserv.c Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
vm_reserv.h Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
vm_unix.c
vm_zeroidle.c
vm.h Add new bus methods for mapping resources. 2016-05-20 17:57:47 +00:00
vnode_pager.c Clarify the vnode_destroy_vobject() logic handling for already terminated 2016-07-05 11:21:02 +00:00
vnode_pager.h A change to KPI of vm_pager_get_pages() and underlying VOP_GETPAGES(). 2015-12-16 21:30:45 +00:00