Skip to content
  • Mark Johnston's avatar
    Merge the vm_page hold and wire mechanisms. · eeacb3b0
    Mark Johnston authored
    The hold_count and wire_count fields of struct vm_page are separate
    reference counters with similar semantics.  The remaining essential
    differences are that holds are not counted as a reference with respect
    to LRU, and holds have an implicit free-on-last unhold semantic whereas
    vm_page_unwire() callers must explicitly determine whether to free the
    page once the last reference to the page is released.
    
    This change removes the KPIs which directly manipulate hold_count.
    Functions such as vm_fault_quick_hold_pages() now return wired pages
    instead.  Since r328977 the overhead of maintaining LRU for wired pages
    is lower, and in many cases vm_fault_quick_hold_pages() callers would
    swap holds for wirings on the returned pages anyway, so with this change
    we remove a number of page lock acquisitions.
    
    No functional change is intended.  __FreeBSD_version is bumped.
    
    Reviewed by:	alc, kib
    Discussed with:	jeff
    Discussed with:	jhb, np (cxgbe)
    Tested by:	pho (previous version)
    Sponsored by:	Netflix
    Differential Revision:	https://reviews.freebsd.org/D19247
    eeacb3b0