freebsd-nq/sys/vm
Alan Cox 9ee2165f5d Eliminate checks for a page having a NULL object in vm_pageout_scan()
and vm_pageout_page_stats().  These checks were recently introduced by
the first page locking commit, r207410, but they are not needed.  At
the same time, eliminate some redundant accesses to the page's object
field.  (These accesses should have neen eliminated by r207410.)

Make the assertion in vm_page_flag_set() stricter.  Specifically, only
managed pages should have PG_WRITEABLE set.

Add a comment documenting an assertion to vm_page_flag_clear().

It has long been the case that fictitious pages have their wire count
permanently set to one.  Add comments to vm_page_wire() and
vm_page_unwire() documenting this.  Add assertions to these functions
as well.

Update the comment describing vm_page_unwire().  Much of the old
comment had little to do with vm_page_unwire(), but a lot to do with
_vm_page_deactivate().  Move relevant parts of the old comment to
_vm_page_deactivate().

Only pages that belong to an object can be paged out.  Therefore, it
is pointless for vm_page_unwire() to acquire the page queues lock and
enqueue such pages in one of the paging queues.  Generally speaking,
such pages are immediately freed after the call to vm_page_unwire().
Previously, it was the call to vm_page_free() that reacquired the page
queues lock and removed these pages from the paging queues.  Now, we
will never acquire the page queues lock for this case.  (It is also
worth noting that since both vm_page_unwire() and vm_page_free()
occurred with the page locked, the page daemon never saw the page with
its object field set to NULL.)

Change the panic with vm_page_unwire() to provide a more precise message.

Reviewed by:	kib@
2010-06-14 19:54:19 +00:00
..
default_pager.c Implement global and per-uid accounting of the anonymous memory. Add 2009-06-23 20:45:22 +00:00
device_pager.c Eliminate page queues locking around most calls to vm_page_free(). 2010-05-06 18:58:32 +00:00
memguard.c Start copyright notice with /*- 2010-04-07 16:29:10 +00:00
memguard.h Start copyright notice with /*- 2010-04-07 16:29:10 +00:00
phys_pager.c Handle busy status of the page in a way expected for pager_getpage(). 2010-05-03 19:19:58 +00:00
pmap.h Roughly half of a typical pmap_mincore() implementation is machine- 2010-05-24 14:26:57 +00:00
redzone.c Fix REDZONE(9) on amd64 and perhaps other 64 bit targets -- ensure the space 2008-08-13 17:32:48 +00:00
redzone.h
sg_pager.c Eliminate page queues locking around most calls to vm_page_free(). 2010-05-06 18:58:32 +00:00
swap_pager.c Call vm_page_deactivate() rather than vm_page_dontneed() in 2010-05-09 16:27:42 +00:00
swap_pager.h
uma_core.c Update several places that iterate over CPUs to use CPU_FOREACH(). 2010-06-11 18:46:34 +00:00
uma_dbg.c - Make the keg abstraction more complete. Permit a zone to have multiple 2009-01-25 09:11:24 +00:00
uma_dbg.h
uma_int.h - enable alignment on amd64 only 2010-03-22 22:39:32 +00:00
uma.h - Make the keg abstraction more complete. Permit a zone to have multiple 2009-01-25 09:11:24 +00:00
vm_contig.c Make vm_contig_grow_cache() extern, and use it when vm_phys_alloc_contig() 2010-06-04 06:35:36 +00:00
vm_extern.h o) Add a VM find-space option, VMFS_TLB_ALIGNED_SPACE, which searches the 2010-04-18 22:32:07 +00:00
vm_fault.c When waiting for the busy page, do not unlock the object unless unlock 2010-05-20 08:51:01 +00:00
vm_glue.c Eliminate page queues locking around most calls to vm_page_free(). 2010-05-06 18:58:32 +00:00
vm_init.c Align the start of the clean submap to a superpage boundary. Although 2010-02-21 22:23:13 +00:00
vm_kern.c The pages allocated by kmem_alloc_attr() and kmem_malloc() are unmanaged. 2010-05-03 07:08:16 +00:00
vm_kern.h Enable the creation of a kmem map larger than 4GB. 2008-07-05 19:34:33 +00:00
vm_map.c Push down page queues lock acquisition in pmap_enter_object() and 2010-05-26 18:00:44 +00:00
vm_map.h o) Add a VM find-space option, VMFS_TLB_ALIGNED_SPACE, which searches the 2010-04-18 22:32:07 +00:00
vm_meter.c Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to 2009-07-24 13:50:29 +00:00
vm_mmap.c Push down page queues lock acquisition in pmap_enter_object() and 2010-05-26 18:00:44 +00:00
vm_object.c Roughly half of a typical pmap_mincore() implementation is machine- 2010-05-24 14:26:57 +00:00
vm_object.h VI_OBJDIRTY vnode flag mirrors the state of OBJ_MIGHTBEDIRTY vm object 2009-12-21 12:29:38 +00:00
vm_page.c Eliminate checks for a page having a NULL object in vm_pageout_scan() 2010-06-14 19:54:19 +00:00
vm_page.h Reduce the scope of the page queues lock and the number of 2010-06-10 16:56:35 +00:00
vm_pageout.c Eliminate checks for a page having a NULL object in vm_pageout_scan() 2010-06-14 19:54:19 +00:00
vm_pageout.h Make vm_contig_grow_cache() extern, and use it when vm_phys_alloc_contig() 2010-06-04 06:35:36 +00:00
vm_pager.c Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to 2009-07-24 13:50:29 +00:00
vm_pager.h Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to 2009-07-24 13:50:29 +00:00
vm_param.h On Alan's advice, rather than do a wholesale conversion on a single 2010-04-30 00:46:43 +00:00
vm_phys.c Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
vm_phys.h Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
vm_reserv.c Previously, when vm_page_free_toq() was performed on a page belonging to 2009-04-11 09:09:00 +00:00
vm_reserv.h Introduce vm_reserv_reclaim_contig(). This function is used by 2008-04-06 18:09:28 +00:00
vm_unix.c Remove execute permission from the memory allocated by sbrk(). 2009-04-11 22:34:08 +00:00
vm_zeroidle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
vm.h Replace VM_PROT_OVERRIDE_WRITE by VM_PROT_COPY. VM_PROT_OVERRIDE_WRITE has 2009-11-26 05:16:07 +00:00
vnode_pager.c Minimize the use of the page queues lock for synchronizing access to the 2010-06-02 15:46:37 +00:00
vnode_pager.h Do not sleep for vnode lock while holding map lock in vm_fault. Try to 2009-02-08 20:23:46 +00:00