1                        ==============================
   2                        UNEVICTABLE LRU INFRASTRUCTURE
   3                        ==============================
   9 (*) The Unevictable LRU
  11     - The unevictable page list.
  12     - Memory control group interaction.
  13     - Marking address spaces unevictable.
  14     - Detecting Unevictable Pages.
  15     - vmscan's handling of unevictable pages.
  17 (*) mlock()'d pages.
  19     - History.
  20     - Basic management.
  21     - mlock()/mlockall() system call handling.
  22     - Filtering special vmas.
  23     - munlock()/munlockall() system call handling.
  24     - Migrating mlocked pages.
  25     - mmap(MAP_LOCKED) system call handling.
  26     - munmap()/exit()/exec() system call handling.
  27     - try_to_unmap().
  28     - try_to_munlock() reverse map scan.
  29     - Page reclaim in shrink_*_list().
  36This document describes the Linux memory manager's "Unevictable LRU"
  37infrastructure and the use of this to manage several types of "unevictable"
  40The document attempts to provide the overall rationale behind this mechanism
  41and the rationale for some of the design decisions that drove the
  42implementation.  The latter design rationale is discussed in the context of an
  43implementation description.  Admittedly, one can obtain the implementation
  44details - the "what does it do?" - by reading the code.  One hopes that the
  45descriptions below add value by provide the answer to "why does it do that?".
  52The Unevictable LRU facility adds an additional LRU list to track unevictable
  53pages and to hide these pages from vmscan.  This mechanism is based on a patch
  54by Larry Woodman of Red Hat to address several scalability problems with page
  55reclaim in Linux.  The problems have been observed at customer sites on large
  56memory x86_64 systems.
  58To illustrate this with an example, a non-NUMA x86_64 platform with 128GB of
  59main memory will have over 32 million 4k pages in a single zone.  When a large
  60fraction of these pages are not evictable for any reason [see below], vmscan
  61will spend a lot of time scanning the LRU lists looking for the small fraction
  62of pages that are evictable.  This can result in a situation where all CPUs are
  63spending 100% of their time in vmscan for hours or days on end, with the system
  64completely unresponsive.
  66The unevictable list addresses the following classes of unevictable pages:
  68 (*) Those owned by ramfs.
  70 (*) Those mapped into SHM_LOCK'd shared memory regions.
  72 (*) Those mapped into VM_LOCKED [mlock()ed] VMAs.
  74The infrastructure may also be able to handle other conditions that make pages
  75unevictable, either by definition or by circumstance, in the future.
  81The Unevictable LRU infrastructure consists of an additional, per-zone, LRU list
  82called the "unevictable" list and an associated page flag, PG_unevictable, to
  83indicate that the page is being managed on the unevictable list.
  85The PG_unevictable flag is analogous to, and mutually exclusive with, the
  86PG_active flag in that it indicates on which LRU list a page resides when
  87PG_lru is set.
  89The Unevictable LRU infrastructure maintains unevictable pages on an additional
  90LRU list for a few reasons:
  92 (1) We get to "treat unevictable pages just like we treat other pages in the
  93     system - which means we get to use the same code to manipulate them, the
  94     same code to isolate them (for migrate, etc.), the same code to keep track
  95     of the statistics, etc..." [Rik van Riel]
  97 (2) We want to be able to migrate unevictable pages between nodes for memory
  98     defragmentation, workload management and memory hotplug.  The linux kernel
  99     can only migrate pages that it can successfully isolate from the LRU
 100     lists.  If we were to maintain pages elsewhere than on an LRU-like list,
 101     where they can be found by isolate_lru_page(), we would prevent their
 102     migration, unless we reworked migration code to find the unevictable pages
 103     itself.
 106The unevictable list does not differentiate between file-backed and anonymous,
 107swap-backed pages.  This differentiation is only important while the pages are,
 108in fact, evictable.
 110The unevictable list benefits from the "arrayification" of the per-zone LRU
 111lists and statistics originally proposed and posted by Christoph Lameter.
 113The unevictable list does not use the LRU pagevec mechanism. Rather,
 114unevictable pages are placed directly on the page's zone's unevictable list
 115under the zone lru_lock.  This allows us to prevent the stranding of pages on
 116the unevictable list when one task has the page isolated from the LRU and other
 117tasks are changing the "evictability" state of the page.
 123The unevictable LRU facility interacts with the memory control group [aka
 124memory controller; see Documentation/cgroups/memory.txt] by extending the
 125lru_list enum.
 127The memory controller data structure automatically gets a per-zone unevictable
 128list as a result of the "arrayification" of the per-zone LRU lists (one per
 129lru_list enum element).  The memory controller tracks the movement of pages to
 130and from the unevictable list.
 132When a memory control group comes under memory pressure, the controller will
 133not attempt to reclaim pages on the unevictable list.  This has a couple of
 136 (1) Because the pages are "hidden" from reclaim on the unevictable list, the
 137     reclaim process can be more efficient, dealing only with pages that have a
 138     chance of being reclaimed.
 140 (2) On the other hand, if too many of the pages charged to the control group
 141     are unevictable, the evictable portion of the working set of the tasks in
 142     the control group may not fit into the available memory.  This can cause
 143     the control group to thrash or to OOM-kill tasks.
 149For facilities such as ramfs none of the pages attached to the address space
 150may be evicted.  To prevent eviction of any such pages, the AS_UNEVICTABLE
 151address space flag is provided, and this can be manipulated by a filesystem
 152using a number of wrapper functions:
 154 (*) void mapping_set_unevictable(struct address_space *mapping);
 156        Mark the address space as being completely unevictable.
 158 (*) void mapping_clear_unevictable(struct address_space *mapping);
 160        Mark the address space as being evictable.
 162 (*) int mapping_unevictable(struct address_space *mapping);
 164        Query the address space, and return true if it is completely
 165        unevictable.
 167These are currently used in two places in the kernel:
 169 (1) By ramfs to mark the address spaces of its inodes when they are created,
 170     and this mark remains for the life of the inode.
 172 (2) By SYSV SHM to mark SHM_LOCK'd address spaces until SHM_UNLOCK is called.
 174     Note that SHM_LOCK is not required to page in the locked pages if they're
 175     swapped out; the application must touch the pages manually if it wants to
 176     ensure they're in memory.
 182The function page_evictable() in vmscan.c determines whether a page is
 183evictable or not using the query function outlined above [see section "Marking
 184address spaces unevictable"] to check the AS_UNEVICTABLE flag.
 186For address spaces that are so marked after being populated (as SHM regions
 187might be), the lock action (eg: SHM_LOCK) can be lazy, and need not populate
 188the page tables for the region as does, for example, mlock(), nor need it make
 189any special effort to push any pages in the SHM_LOCK'd area to the unevictable
 190list.  Instead, vmscan will do this if and when it encounters the pages during
 191a reclamation scan.
 193On an unlock action (such as SHM_UNLOCK), the unlocker (eg: shmctl()) must scan
 194the pages in the region and "rescue" them from the unevictable list if no other
 195condition is keeping them unevictable.  If an unevictable region is destroyed,
 196the pages are also "rescued" from the unevictable list in the process of
 197freeing them.
 199page_evictable() also checks for mlocked pages by testing an additional page
 200flag, PG_mlocked (as wrapped by PageMlocked()).  If the page is NOT mlocked,
 201and a non-NULL VMA is supplied, page_evictable() will check whether the VMA is
 202VM_LOCKED via is_mlocked_vma().  is_mlocked_vma() will SetPageMlocked() and
 203update the appropriate statistics if the vma is VM_LOCKED.  This method allows
 204efficient "culling" of pages in the fault path that are being faulted in to
 211If unevictable pages are culled in the fault path, or moved to the unevictable
 212list at mlock() or mmap() time, vmscan will not encounter the pages until they
 213have become evictable again (via munlock() for example) and have been "rescued"
 214from the unevictable list.  However, there may be situations where we decide,
 215for the sake of expediency, to leave a unevictable page on one of the regular
 216active/inactive LRU lists for vmscan to deal with.  vmscan checks for such
 217pages in all of the shrink_{active|inactive|page}_list() functions and will
 218"cull" such pages that it encounters: that is, it diverts those pages to the
 219unevictable list for the zone being scanned.
 221There may be situations where a page is mapped into a VM_LOCKED VMA, but the
 222page is not marked as PG_mlocked.  Such pages will make it all the way to
 223shrink_page_list() where they will be detected when vmscan walks the reverse
 224map in try_to_unmap().  If try_to_unmap() returns SWAP_MLOCK,
 225shrink_page_list() will cull the page at that point.
 227To "cull" an unevictable page, vmscan simply puts the page back on the LRU list
 228using putback_lru_page() - the inverse operation to isolate_lru_page() - after
 229dropping the page lock.  Because the condition which makes the page unevictable
 230may change once the page is unlocked, putback_lru_page() will recheck the
 231unevictable state of a page that it places on the unevictable list.  If the
 232page has become unevictable, putback_lru_page() removes it from the list and
 233retries, including the page_unevictable() test.  Because such a race is a rare
 234event and movement of pages onto the unevictable list should be rare, these
 235extra evictabilty checks should not occur in the majority of calls to
 243The unevictable page list is also useful for mlock(), in addition to ramfs and
 244SYSV SHM.  Note that mlock() is only available in CONFIG_MMU=y situations; in
 245NOMMU situations, all mappings are effectively mlocked.
 251The "Unevictable mlocked Pages" infrastructure is based on work originally
 252posted by Nick Piggin in an RFC patch entitled "mm: mlocked pages off LRU".
 253Nick posted his patch as an alternative to a patch posted by Christoph Lameter
 254to achieve the same objective: hiding mlocked pages from vmscan.
 256In Nick's patch, he used one of the struct page LRU list link fields as a count
 257of VM_LOCKED VMAs that map the page.  This use of the link field for a count
 258prevented the management of the pages on an LRU list, and thus mlocked pages
 259were not migratable as isolate_lru_page() could not find them, and the LRU list
 260link field was not available to the migration subsystem.
 262Nick resolved this by putting mlocked pages back on the lru list before
 263attempting to isolate them, thus abandoning the count of VM_LOCKED VMAs.  When
 264Nick's patch was integrated with the Unevictable LRU work, the count was
 265replaced by walking the reverse map to determine whether any VM_LOCKED VMAs
 266mapped the page.  More on this below.
 272mlocked pages - pages mapped into a VM_LOCKED VMA - are a class of unevictable
 273pages.  When such a page has been "noticed" by the memory management subsystem,
 274the page is marked with the PG_mlocked flag.  This can be manipulated using the
 275PageMlocked() functions.
 277A PG_mlocked page will be placed on the unevictable list when it is added to
 278the LRU.  Such pages can be "noticed" by memory management in several places:
 280 (1) in the mlock()/mlockall() system call handlers;
 282 (2) in the mmap() system call handler when mmapping a region with the
 283     MAP_LOCKED flag;
 285 (3) mmapping a region in a task that has called mlockall() with the MCL_FUTURE
 286     flag
 288 (4) in the fault path, if mlocked pages are "culled" in the fault path,
 289     and when a VM_LOCKED stack segment is expanded; or
 291 (5) as mentioned above, in vmscan:shrink_page_list() when attempting to
 292     reclaim a page in a VM_LOCKED VMA via try_to_unmap()
 294all of which result in the VM_LOCKED flag being set for the VMA if it doesn't
 295already have it set.
 297mlocked pages become unlocked and rescued from the unevictable list when:
 299 (1) mapped in a range unlocked via the munlock()/munlockall() system calls;
 301 (2) munmap()'d out of the last VM_LOCKED VMA that maps the page, including
 302     unmapping at task exit;
 304 (3) when the page is truncated from the last VM_LOCKED VMA of an mmapped file;
 305     or
 307 (4) before a page is COW'd in a VM_LOCKED VMA.
 310mlock()/mlockall() SYSTEM CALL HANDLING
 313Both [do_]mlock() and [do_]mlockall() system call handlers call mlock_fixup()
 314for each VMA in the range specified by the call.  In the case of mlockall(),
 315this is the entire active address space of the task.  Note that mlock_fixup()
 316is used for both mlocking and munlocking a range of memory.  A call to mlock()
 317an already VM_LOCKED VMA, or to munlock() a VMA that is not VM_LOCKED is
 318treated as a no-op, and mlock_fixup() simply returns.
 320If the VMA passes some filtering as described in "Filtering Special Vmas"
 321below, mlock_fixup() will attempt to merge the VMA with its neighbors or split
 322off a subset of the VMA if the range does not cover the entire VMA.  Once the
 323VMA has been merged or split or neither, mlock_fixup() will call
 324__mlock_vma_pages_range() to fault in the pages via get_user_pages() and to
 325mark the pages as mlocked via mlock_vma_page().
 327Note that the VMA being mlocked might be mapped with PROT_NONE.  In this case,
 328get_user_pages() will be unable to fault in the pages.  That's okay.  If pages
 329do end up getting faulted into this VM_LOCKED VMA, we'll handle them in the
 330fault path or in vmscan.
 332Also note that a page returned by get_user_pages() could be truncated or
 333migrated out from under us, while we're trying to mlock it.  To detect this,
 334__mlock_vma_pages_range() checks page_mapping() after acquiring the page lock.
 335If the page is still associated with its mapping, we'll go ahead and call
 336mlock_vma_page().  If the mapping is gone, we just unlock the page and move on.
 337In the worst case, this will result in a page mapped in a VM_LOCKED VMA
 338remaining on a normal LRU list without being PageMlocked().  Again, vmscan will
 339detect and cull such pages.
 341mlock_vma_page() will call TestSetPageMlocked() for each page returned by
 342get_user_pages().  We use TestSetPageMlocked() because the page might already
 343be mlocked by another task/VMA and we don't want to do extra work.  We
 344especially do not want to count an mlocked page more than once in the
 345statistics.  If the page was already mlocked, mlock_vma_page() need do nothing
 348If the page was NOT already mlocked, mlock_vma_page() attempts to isolate the
 349page from the LRU, as it is likely on the appropriate active or inactive list
 350at that time.  If the isolate_lru_page() succeeds, mlock_vma_page() will put
 351back the page - by calling putback_lru_page() - which will notice that the page
 352is now mlocked and divert the page to the zone's unevictable list.  If
 353mlock_vma_page() is unable to isolate the page from the LRU, vmscan will handle
 354it later if and when it attempts to reclaim the page.
 360mlock_fixup() filters several classes of "special" VMAs:
 3621) VMAs with VM_IO or VM_PFNMAP set are skipped entirely.  The pages behind
 363   these mappings are inherently pinned, so we don't need to mark them as
 364   mlocked.  In any case, most of the pages have no struct page in which to so
 365   mark the page.  Because of this, get_user_pages() will fail for these VMAs,
 366   so there is no sense in attempting to visit them.
 3682) VMAs mapping hugetlbfs page are already effectively pinned into memory.  We
 369   neither need nor want to mlock() these pages.  However, to preserve the
 370   prior behavior of mlock() - before the unevictable/mlock changes -
 371   mlock_fixup() will call make_pages_present() in the hugetlbfs VMA range to
 372   alloceing mloos="l wh1ASIC ="Documentatm1Flru.txt#L369" id=umentatio3/vm/unevictable-lru.txt#3273" 3d="L173" class="line" name="L173"> 173
 ame="Lra>this"line" nathe unevictable list in the process of
 line"DSOthe lasIO " classrened.  To etcr VM_Pneither e unevictable list in the process of
 363 ll call make_"linetia themloos="l wh1ASIC ="Documentatm1Flru.txt#L369" id=umentation/vm/unevictable-lru.txt#3278" 3d="L275" cl371   mlock_fixt to   alloceing mloos="l wh1ASIC ="Documentatm1Flru.txt#L369" id=umentation/vm/unevictable-lru.txt#3279" 3d="L279" class="line" name="L279"> 279
 these pages.  However, to preserve the
 3e="L302"ire lass="lff a class="line" nac"> 344he unevictable list should be rare, these
 310mlock()/mlockall() SYSTEM CALL HANDLING
 311---me="L358"> 358----------------------
 316ie unlocked via thecl cl the pa>for eac namehrink_{act"L358"> 358----------------------
 e unlocked via thecn a task ).  If vemloos="l wh1ASIC ="Documentatm1Flru.txt#L369" id=umentatio3/vm/unevictable-lru.txt#3291" 3d="L29  If ng putbackindied by ine" cl gSIC =s="lo, namseclked via thecl cl243 299gettmloos="l wh1ASIC ="Documentatm1Flru.txt#L369" id=umentatio3/vm/unevictable-lru.txt#3293" 39="L353" cla18treated as a no-oame="L365"> 365ne" na320"> 320 quot;mm: mlocked pages off LRU".
54"> 354elow, ="L323"> 3ft places on the unevictable list.  If the
 314ages_r VM_PFages_pass="lnlm299"> 299 (1)hrink_{aces on the unevictable list.  If the
 35ndied bive addmapped i6 266<351">ere pm, all mappings are effectively mlocked.
 229d> 343cfrom protenk_{acta pageain (via mck() -ssom  being mlse operation to isolate_lru_page() - after
 351">.  To    mark the page. ame="relit the"> 21therand when it encounters the pages during
 andoame="L365">be mlocked by anothe5fname="LageMlocked()).  If the page is NOT mlocked,
 al,l4" class="line" name="L334299"> s35ndividumlockeds name="L3518" class="line" name="L308"> 308
 ass="line" nam0299"> ass="line" 429ropping t> amec5 308ING
 338remai8"> e ulru.txt#L353" idhe5fname="LageMlocked()).  If the page is NOT --------
4a href="Documentation/vm4unevi412ble-lru.txt#4310" 4d=" txt#4302ass=*lru.txt#L275" id="L275)c-snd up gett>for e223" e5fname="LageMlocked()).  If the page is NOT -- after
fname="LageMlocked()).  If the page is NOT - during
allnumberame="Lra>this"line" nathe unevictable list in the p4ckall(),
4a href="Documentation/vm4unevi4table-lru.txt#L297"15t, h="line" naatname=" id="> 2am29om p> andoamass="223"> tquot;rescue" them from the unevictable list if4_fixup()
4a href="Documentation/vm4unevi41able-lru.txt# name="L2213" ="L343lru.txt#L205" id="L205" class="line" name="L205"> 205VM_LOC4 mlock()
4a href="Documentation/vm4unevi41able-lru.txt#L367" id="L367" class="line" name="L367"4OCKED is
4a href="Documentation/vm4unevi4table-Wt>fo> andoama for 292"> txt#4309" 4ss="lnlm299" naatnrink_page_list() line" nlru.txt#L367" id="L367" class="line" name="L367"4O308
 353mlid="L205" class="line" name="L205"> 205VM_LOC4 319
4a href="Documentation/vm4unevi4table- 292"> txt#4309"cludinvaria" classs="line" name=/a>prevenre>__mx="L257"- by calling putback_lru_page() - which will notice that4as"
4a href="Documentation/vm4unevi4table-d="L29>ame="L258"> 25 [m266" clasu.txlru.t]lass="line" named for bling putback_lru_page() - which will notice that4a-------
4a href="Documentation/vm4unevi42able-lrlass="line" name="L259"  ma,cked.  In for e2e="L259> andoam 292"> txt#4309"xup() ling putback_lru_page() - which will notice that4a- after
 nt,"L29donamene" namenameine" c marke2eling putback_lru_page() - which will notice that4a during
fo>e="L35ssfu="li"line" name="L35athe page is ling putback_lru_page() - which will notice that4akall(),
4a href="Documentation/vm4unevi4table- 292"> txt#4309" 4> 351bamx=t 3cfrptss="line" name=" is slru.txt#L20lassling putback_lru_page() - which will notice that4afixup()
4a href="Documentation/vm4unevi4table-_pagelru.txt#L39which 9  maling putback_lru_page() - which will notice that4amlock()
4a href="Documentation/vm4unevi4table-ss="line" name="L35 329do end LRUef id="a>tntxt#L34" name="L344"e1" cl claid="L205" class="line" name="L205"> 205VM_LOC4 CKED is
4a href="Documentation/vm4unevi4table-Tru.txt#9do ec" id=lru.txt#L354" id354"line" n.txtine" name="d="L205" class="line" name="L205"> 205VM_LOC4 308
 205VM_LOC4m in the
4a href="Documentation/vm4unevi43able-lru.txt#L340" id="L340" class="line" name="L340"4 vmscan.
4a href="Documentation/vm4unevi4table-lru.txt#L331" id="L331" class="line" name="L331"4 331
4a href="Documentation/vm4unevi4table-MIGRATt#L3lru.txt#L240" id="L240" class="line" name="L240"> 240MLOC4cated or
4a href="Documentation/vm4unevi4table-81" class="line" name="L311"> 311---me="L358"> 358-------------4ct this,
4a href="Documentation/vm4unevi43able-lru.txt#3284" 3d="L284" class="line" name="L284"4ge lock.
4a href="Documentation/vm4unevi4table-A" class="lined bive lru.txt#Ltxt#L323""line" de"> 353ml216" cl" id3s hel ling putback_lru_page() - which will notice that4and call
4a href="Documentation/vm4unevi4table-L352" idcrosstxt#L302" iline" name=,"L233" cla3" s"L2ass="line" namu_prWe use TestSetPageMlocked() because the page migh4move on.
4a href="Documentation/vm4unevi43able-lr stopye="L263"> n>tntcl" idlru.=,slntxss="line" nme="L3u_prWLtxt#L323e use TestSetPageMlocked() because the page migh4mCKED is
4a href="Documentation/vm4unevi4table-lrass="li> e ue" u_prWLs="li TeL360" name=new5" id="LLinuxe="ppoull& name="L2e use TestSetPageMlocked() because the page migh4m308
 353 e ulru.t2" il40="L274"  eine" namene" " id=h the PG_mlocked flag.  This can be manipulated 4hated or
4a href="Documentation/vm4unevi4table-lr3s hxt#L323"> 365ne" n"> 353d> a320"ncou id=pro35ss=se(r_p3291" 3" 4d=[un]274"  e).toli"- by calling putback_lru_page() - which will notice that4e in the
4a href="Documentation/vm4unevi4table-txt#L364"lr3s provid>droppifir clllintch) synch> nizage()64"P_user_p3291" ling putback_lru_page() - which will notice that4end call
4a href="Documentation/vm4unevi4table-zerosL333"- by cal_#L302" iline" noli="lineline" n"L274"  eiitme="L=[un]274"ling putback_lru_page() - which will notice that4eove on.
4a href="Documentation/vm4unevi4table-fo>e=kip" name="L369d viax=td="L233" clau.L302" iL333" _pages_range() checks page_mapping() after acquiring the p4 347
4a href="Documentation/vm4unevi44able-lru.txt#4308" 4d="L308" class="line" name="L308">late the
4a href="Documentation/vm4unevi4table-Tclas="Lete2t_user_p3291" aass="name=new5= id=l name="L262"> 2" name=>mllru.txt#4308" 4d="L308" class="line" name="L308">ive list
4a href="Documentation/vm4unevi4table-l 334In tnun9" ia> (4) in351" idoli="lineo>e="L35ss,=newlru.txt#4308" 4d="L308" class="line" name="L308">ivmscan.
4a href="Documentation/vm4unevi4table-"lineo>e  ma-="L328" cfreedtxt#L304"  TeL3earkeff a chel pages_p3291" ling putback_lru_page() - which will notice that4the page
4a href="Documentation/vm4unevi4table-lro35ssd3s  cne"ed ouensur.txt#32m299"> andoamstrss="lage="L231"> 231unevling putback_lru_page() - which will notice that4tated or
4a href="Documentation/vm4unevi4table-k resoltreated aes, incbetwees_r VM_PF3" 4d=_p3291" droppling putback_lru_page() - which will notice that4tt this,
4a href="Documentation/vm4unevi4table-ss="line" name="L35id="L275)c-sass lru.txt#Lame="L262">" name=>mlnge() checks page_mapping() after acquiring the p4he page.
4a href="Documentation/vm4unevi4table-lru.txt#L355" id="L355" class="line" name="L355"4 355
4a href="Documentation/vm4unevi4table-lru.txt#L356" id="L356" class="line" name="L356"4 356
4a href="Documentation/vm4unevi4table-" id=xt#L283" i mapped in a range unloe="L310"> 310mlock()/mlockall() SYSTEM CALL4IAL VMAS
4a href="Documentation/vm4unevi4table-lru.txt#L358" id="L358s="line" name="L311"> 311---me="L358"> 358-------------4--------
4a href="Documentation/vm4unevi4table-lru.txt#L359" id="L359" class="line" name="L359"4 359
4a href="Documentation/vm4unevi4table-Ia>The uneviche9do" clas[ t280" class="line" name=d="Ln="L3line"1" 3ne" ,eque as it is likely on the appropriate active or inac4t; VMAs:
4a href="Documentation/vm4unevi4table-32" id=="L285" 316i lru.txt#L34="pplye="L263"xt#L283" id="L2s="line" 2     reclaim a page in a VM_LOCKED VMA via try_t4 361
4a href="Documentation/vm4unevi4table-L314"> Fur"L34m294at " id="Ld fort#L3rk="Ld for32" iL289">droppiheape3" i     reclaim a page in a VM_LOCKED VMA via try_t4 ated or
4a href="Documentation/vm4unevi4table-s="line" name=ide344 285 (3) mmapping a regiond="L2sclass="line     reclaim a page in a VM_LOCKED VMA via try_t4 t this,
4a href="Documentation/vm4unevi4table- id="L3newL35m="L2216i lr27" class="ncounne" name="L370"> 370       reclaim a page in a VM_LOCKED VMA via try_t4 e page.
4a href="Documentation/vm4unevi4table-prior b" name.txt#3239="L35"L285"> txt#3278" 3d="L275" cl3.txt#L372" name= i     reclaim a page in a VM_LOCKED VMA via try_t4 355
4a href="Documentation/vm4unevi4table-71   mlocke" nme="Lnge() checks page_mapping() after acquiring the p4it them.
4a href="Documentation/vm4unevi4table-lru.txt#L367" id="L367" class="line" name="L367"4 367
4a href="Documentation/vm4unevi4table-Tc namehrinL316"> 316iiL333" ame="L370"> 370   "L251"> 251pr="liass="line" namu289"f> 3cl the pa>ftill associated with its mapping, we'll go ahead4erve the
4a href="Documentation/vm4unevi47able-lru.txpam299"> al,l4" cllru.txye="L263"pamnot migraass="linup() wil namehnge() checks page_mapping() after acquiring the p4hanges -
4a href="Documentation/vm4unevi47able-lru.txt#L341"  al,l4" clid="L360 seves="lclass="l/a>do ,ine" name="L32a320" "Lge() checks page_mapping() after acquiring the p4h361
4a href="Documentation/vm4unevi4table- 320If the VMA passessevked aneame">"L371"e" 4rtclass="line" name 4> 351band Lge() checks page_mapping() after acquiring the p4hated or
4t#L369" id=umentatio3/vm4unevi4table-st wifmmotenk 294 name="L314ne"  idid="L3 pag" 8gu" class="li3" s"L29" id="t="lo, namsecclass="e="L3mloos="l wh1ASIC ="Document4 173
4a href="Do3umentatio3/vm4unevi4table-e. amxt#3295" 3d="Ltxt#L304"  TL285" stxt#L30ed i6 266<351">ere pm, all mappings are effectively ocess of
4a href="Do3umentatio3/vm4unevi47able-lru.txt#L355" id="L355" class="line" name="L355"4ocess of
4a href="Do3umentation/vm4unevi4table-lru.s="line""L33>In tnyk_fi 350at that ="L334" clas="lolru.txt#L324" id="L324" claslru.txt#L355" id="L355" class="line" name="L355"4ot them.
4t#L369" id=umentation/vm4unevi4table-lru.t/.txt#L372" id" name= idmmlocme pa>forcls="lclass="l/a>do ,lru.txt#L355" id="L355" class="line" name="L355"4o367
4t#L369" id=umentation/vm4unevi4table-u.txt#L324" id="L324">droppi" idk 2 idhe" nae" nage()dneline" lru.txt#L355" id="L355" class="line" name="L355"4ory.  We
4t#L369" id=umentation/vm4unevi4table-ss="line" namelru.t/.txt#L372= idmmlocd" name= id>In>d>In tny name2 idhe" lru.txt#L355" id="L355" class="line" name="L355"4 279
4a href="Do3umentatio3/vm4unevi4table-262">" nwramxe()dneline" 53" claxt#4307" 40="L297" clandomloos="l wh1ASIC ="Documentaerve the
4a href="Documentatio3/vm4unevi4table-lru.txt#L281" id="L281" class="line" name="L281"4s during
4a href="Do3umentatio3/vm4unevi4table-Te="L314nes"L370" cl#L324" id="L324" cl/a>band Lrst wifmmd page hges.  WheL324"lru.txt#L281" id="L281" class="line" name="L281"4sated or
4a href="Do3umentatio3/vm4unevi4table-" nlru.txt#L34="line""L323" s"L213"sts the entcked aneed ou"lff a c3295id="L3 pag" 8,lru.txt#L355" id="L355" class="line" name="L355"4U".
4a href="Do3umentatio3/vm4unevi484ble-u.txt#L324" id="L324" cl3" cla1a>allnumberamed" name="L3class="ncoAd="L287" lru.txt#L355" id="L355" class="line" name="L355"4Ucess of
4a href="Do3umentatio3/vm4unevi4table-L314nes"t273" ibtratxt#d="n-nege"l36l3" cla valuge"> 353 341xa="Le,e"> 35lru.txt#4305" 4dlru.txt#L355" id="L355" class="line" name="L355"4Ut them.
4a href="Documentatio3/vm4unevi4table-ss="line" namelru.t7In A"> 327Note d="L309that the VMA bei2m29>be ml7" lru.txt#L355" id="L355" class="line" name="L355"4U367
4a href="Documentatio3/vm4unevi4table-s.  WheL324"u"lff a xt#L31 the entc,"L29do" > 229d> 343cfrlru_{acta p.txt#lru.txt#L355" id="L355" class="line" name="L355"4Ury.  We
4a href="Documentatio3/vm4unevi4table-ss="lage=".txt#L37class="li"li TL2854307" 40="L297" clandomloos="l wh1ASIC ="Documenta--------
4a href="Documentatio3/vm4unevi4table-lru.txt#L290" id="L290" class="line" name="L290"4tm1Flru.t4t#L369" id=umentatio3/vm4unevi49able-lru.txt#L281" id="L281" class="line" name="L281"4tm1Flru.t4t#L369" id=umentatio3/vm4unevi492ble-lru id="/al,l="/alec8 mapped in a range unloe="L310"> 310mlock()/mlockall() SYSTEM CALL4tm1Flru.t4t#L369" id=umentatio3/vm4unevi49able-81" class="line" name=""L358s="line" name="L311"> 311---me="L358"> 358-------------4tm1Flru.t4t#L369" id=umentatio3/vm4unevi49able-lru.txt#3284" 3d="L284" class="line" name="L284"4tm1Flru.t4t#L369" id=umentatio3/vm4unevi4table-Whenk V#L302" idne" name="="L285" 316i,3"> tquof ng puu28licited for bling putback_lru_page() - which will notice that4U".
4a href="Do3umentatio3/vm4unevi496ble-lru id=" page.mnotlassernsseru ide"> 35al,l="  341xec8 mlro35ss35"> 335"  as it is likely on the appropriate active or inac4 296
4a href="Do3umentatio3/vm4unevi4table-l36mlock_vma39whie" name="Lremovked wit"line" name="L301"> 301 (2) munmap id="L205" class="line" name="L205"> 205VM_LOC4  If the
4a href="Do3umentatio3/vm4unevi4table-unne" name="L370"> 370   prior b" lru.t2" idid3atd="L205" class="line" name="L205"> 205VM_LOC4 ry.  We
4a href="Do3umentatio3/vm4unevi4table-wayme="L V#L302" iareedre>__mxd3 205VM_LOC5--------
5a href="Do4umentatio4/vm5unevi5table-lru.txt#L300" id="L300" class="line" name="L300"5mlocked.
5a href="Do4umentatio4/vm5unevi5table-To_r VM_PF3"nL316"> 316iiL333" ame="L370"> 370   "L251"> 251
5a href="Do4umentatio4/vm5unevi502ble-lru id="Lline" na/a>pr="liass="line" namd for " 4rdown"lnlm299"> 299 (1)hrink_{aces on the unevictable list5 - after
5a href="Do4umentatio4/vm5unevi5table-nru.txt#4310" 4ds_/a> (" cL29"tio4  Tel9fname="LageMlocked()).  If the page is NOT5s during
5a href="Do4umentatio4/vm5unevi5table-lru.txt#t#L315" id="Lk_{a classwges_r VM_PF()2" ide/inaeru ided aes,TL2854307" 40="L297" clandomloos="l wh1ASIC ="Document5mlocked,
5a href="Do4umentatio4/vm5unevi5table-a>treated as a no-oame="L365"wges_rru.t2"  cl3"L285b" ine" s="line""L33>In tnyk_fi naat307" 40="L297" clandomloos="l wh1ASIC ="Document5m6ocked,
5a href="Do3umentatio3/vm5unevi5table-atxus="linolaninass="line" name"L328" c0" idds="line" na#4310" 4ds_/a> ("307" 40="L297" clandomloos="l wh1ASIC ="Document5m7ocked,
5a href="Do3umentatio3/vm5unevi50able-lru.txt#L367" id="L367" class="line" name="L367"5tm1Flru.t5t#L369" id4u8entatio4/vm5unevi5table-ine" na#4310" 4ds_/a> (ine" 429ropp name="L301"> me=" is cls="lclass="l/a>do lru.txt#L367" id="L367" class="line" name="L367"5t91Flru.t5t href="Do3umentatio3/vm5unevi5table-4allr VM_PF3A bei2as="lolrune" na#4310" 4ds_L324" classrink mlocke" nme="Llru.txt#L367" id="L367" class="line" name="L367"5 308
5a href="Do4umentatio4/vm5unevi5table-4all of3" s"L2s.  WheL324"u"d="L28T(1)#4310" 4d=" 1 class="l="L337"> 337() will call TestSetPageMlocked() for each page re58ING
5a href="Documentation/vm5unevi511ble-L365subsetlr3s L368"> 368 301 (2) munmap"307" 40="L297" clandomloos="l wh1ASIC ="Document5-- after
5a href="Documentation/vm5unevi51able-lru.txt#3273" 3d="L173" class="line" name="L173"5- during
5a href="Documentation/vm5unevi51able-lru.txt#3284" 3d="L284" class="line" name="L284"5ckall(),
5a href="Documentation/vm5unevi51able- 292"> ru id="lru.txt#3284" 3d="L284" class="line" name="L284"5c6ocked,
5a href="Documentation/vm5unevi51able-="line" name="L311"> 311---me="L358"> 358-------------5 mlock()
5a href="Documentation/vm5unevi51able-lru.txt#L367" id="L367" class="line" name="L367"5OCKED is
5a href="Documentation/vm5unevi5table-P namecan,ed acours5 3bn37"> 337 id="ss3 the pagme="L337"> 337
5a href="Documentation/vm5unevi5table-lru.txt#L205" 3 3tlaf,"> 341xa="Le,eapr="lling putback_lru_page() - which will notice that5a361
5a href="Documentation/vm5unevi52able-ln9do" > 235ssd 316"L274"  eimlocke" n343cfr 353ml"307" 40="L297" clandomloos="l wh1ASIC ="Document5a- after
5a href="Documentation/vm5unevi5table-An of pagesock_vma_/shL36k0" 4d_s="n=" ene" nenff a xr="L175"lass="le" name="L3307" 40="L297" clandomloos="l wh1ASIC ="Document5a during
5a href="Documentation/vm5unevi52able- ids9d s="link_vma_3" s"L2line"2" ilinL176" me="L3> 328ked aneed ound up getu.t ixus91" <307" 40="L297" clandomloos="l wh1ASIC ="Document5akall(),
5a href="Documentation/vm5unevi52able- 292"> ru id="lass="lifo43lru.txt#L205" ss="lin" clasrinktxt#43 cla3" s"L2list() 307" 40="L297" clandomloos="l wh1ASIC ="Document5a6ocked,
5a href="Documentation/vm5unevi5table- id"307" 40="L297" clandomloos="l wh1ASIC ="Document5amlock()
5a href="Documentation/vm5unevi52able-lru.txt#L367" id="L367" class="line" name="L367"5 CKED is
5a href="Documentation/vm5unevi528ble- 292"> ru id="lludilways5"L285",f ng"lin7">"line" fo43 name="L295iory calling putback_lru_page() - which will notice that5 308
5a href="Documentation/vm5unevi5table-r_p3291"  353mlxup(epa.txtling putback_lru_page() - which will notice that5m in the
5a href="Documentation/vm5unevi5table-l the pa>fnd up ganonymoume= idm"> 337fi"L3> 328,"L29do"xt#4yp" nameame="L364"ling putback_lru_page() - which will notice that5ms"
5a href="Documentation/vm5unevi5table-difeL3eat_list() line"meprioism id="L205" class="line" name="L205"> 205VM_LOC5 331
5a href="Documentation/vm5unevi5table-d="L205" class="line" name="L205"> 205VM_LOC5 - after
5a href="Documentation/vm5unevi5table- (*)sss="line" na_anon="lru.txt#3284" 3d="L284" class="line" name="L284"5ct this,
5a href="Documentation/vm5unevi53able-lru.txt#3284" 3d="L284" class="line" name="L284"5ge lock.
5a href="Documentation/vm5unevi53able-lrued ouru ideanonymoumethe lasI#3297n9do" k resanch.txt#7n9do" anon#431lru.txt#3284" 3d="L284" class="line" name="L284"5g6ocked,
5a href="Documentation/vm5unevi536ble-lrued"  a3bn3e. amxt#-namene&qtslntxss>In the worst clludenff a xrL364" idoppling putback_lru_page() - which will notice that5move on.
5a href="Documentation/vm5unevi537ble-lruedtxt# namlr27" xt#L30ed#3295"_p3291" In the worst c" nameine" stop id="L205" class="line" name="L205"> 205VM_LOC5h pages.
5a href="Documentation/vm5unevi5table-lru.txt#L340" id="L340" class="line" name="L340"5hvmscan.
5a href="Documentation/vm5unevi541ble-lruedls="line" na_anon="s class="line/a>__mLR id nage()dneoppi" idk 2 idhe" nme="Lra>this"line" nathe unevictable list in the p5urned by
5a href="Documentation/vm5unevi542ble-lruedlru.mm_4  assr  In a a no-olru.ng345" id="intxt#="L35ssfu=,n" cmal LRU list without being PageMlocked().  Again, vm5hated or
5a href="Documentation/vm5unevi543ble-lrued"mlock_vmage.mnlru.txt#L353" id=-/a>all259> andoamndvcfgoclanr bling putback_lru_page() - which will notice that5ht this,
5a href="Documentation/vm5unevi544ble-lruedls="line" na_anon="siid="L345" cleine" name="ss="line-4" id=lass=" claling putback_lru_page() - which will notice that5he lock.
5a href="Documentation/vm5unevi54able-lruedSWAP_lru.t,"L30ine"  eiml57"- by cal" stxtch will nid="L205" class="line" name="L205"> 205VM_LOC5h6ocked,
5a href="Documentation/vm5unevi54able-lru.txt#L356" id="L356" class="line" name="L356"5eove on.
5a href="Documentation/vm5unevi547ble-lrued336" cla idk 2 idhe" nne"d="L29>/a>__mLd> 335 363 tquof- by calling putback_lru_page() - which will notice that5 347
5a href="Documentation/vm5unevi548ble-lrued3s  cL36RES176" me="L3o43 205VM_LOC5ive list
5a href="Documentation/vm5unevi55able-lru.txt#L340" id="L340" class="line" name="L340"5ivmscan.
5a href="Documentation/vm5unevi5table- (*)sss="line" na_fi"Lid=-/umenar/agen0"> lru.txt#L340" id="L340" class="line" name="L340"5irned by
5a href="Documentation/vm5unevi55able-d="L205" class="line" name="L205"> 205VM_LOC5tated or
5a href="Documentation/vm5unevi553ble-lruedUt#L302" ilinadm"> 337fi"L3> 32ked bne" n8" clsthi LRU lonymoumeagen0"> <307" 40="L297" clandomloos="l wh1ASIC ="Document5tt this,
5a href="Documentation/vm5unevi554ble-lruedexge. aml57"- byine" e. am=".txyk_fi naatline" 33" cla3" s"L2L30ex/"lineoffsee will call TestSetPageMlocked() for each page re5he page.
5a href="Documentation/vm5unevi55able-lruedln9do" >cla3" s"L2agen0">3" s"L2list() line".txt#ityk 2arIn areeeame">msec e. am= will call TestSetPageMlocked() for each page re5h6ocked,
5a href="Documentation/vm5unevi556ble-lruedI#3297n9do" >cla3" s"L2agen0">3" s"L2="n-umenar/k re,siid="L3k resi= will call TestSetPageMlocked() for each page re5hove on.
5a href="Documentation/vm5unevi557ble-lrued="n-ass=yid="L205" class="line" name="L205"> 205VM_LOC5i347
5a href="Documentation/vm5unevi55able-lru.txt#4308" 4d="L308" class="line" name="L308"5--------
5a href="Documentation/vm5unevi559ble-lruedAhi LRU lonymoumethe lasondenff a xrtxt#43 name="L301"> mpagmem"> 337fi"Llru.txt#4308" 4d="L308" class="line" name="L308"5 359
5a href="Documentation/vm5unevi560ble-lruedtxt#,sss="line" na_fi"Lid==lass class=line/a>__mLRdo" assoc 3493307" 40="L297" clandomloos="l wh1ASIC ="Document5t; VMAs:
5a href="Documentation/vm5unevi561ble-lruedmm_4 3" s"L2a idk 2 idhe" nae""mlock_vma,53" claxt#dSWAP_lru.t is="lin307" 40="L297" clandomloos="l wh1ASIC ="Document5trned by
5a href="Documentation/vm5unevi562ble-lrued3s ="L35ssfu=,n" idSWAP_AGAIN,siid lru.txt#L340" id="L340" class="line" name="L340"5 e page.
5a href="Documentation/vm5unevi56able-lru.txt#L355" id="L355" class="line" name="L355"5 355
5a href="Documentation/vm5unevi566ble-lrued336a >cla3" s"L2agen0">inolaninst#d="n-ass=y/="n-umenar/agen0">01"> k re,stamialloceed be"s="L221"aces on the unevictable list5it them.
5a href="Documentation/vm5unevi567ble-lruedls="line"{age|}=" e  a3msec e. amdI#3297n9doamen res _vmatdll ssling putback_lru_page() - which will notice that5 367
5a href="Documentation/vm5unevi568ble-lrued"> tquof- by cal name="L221e pa>forcl- byine" e  a3e. amling putback_lru_page() - which will notice that5 -------
5a href="Documentation/vm5unevi569ble-lrued.txyk_fi  id="L3n"n-umenar/k res _vensur.txt#32xt#L325" i< 3
5a href="Documentation/vm5unevi572ble-lrued336a n the worst clludff ad97n9do" k recl- byine" 343cfrtdll s349t307" 40="L297" clandomloos="l wh1ASIC ="Document5hated or
5t#L369" id=umentatio3/vm5unevi573ble-lrueds="line" nam366" id="easy ways _vmatdll ssd"> tquof- by cal namatxus="l307" 40="L297" clandomloos="l wh1ASIC ="Document5ht this,
5a href="Do3umentatio3/vm5unevi574ble-lruede="L221mpagxt#L302" ilriax=td="L"> tquof- b307" 40="L297" clandomloos="l wh1ASIC ="Document5he page.
5a href="Do3umentatio3/vm5unevi57able-lruedn the worst clatxus="lipin(2) munmap"307" 40="L297" clandomloos="l wh1ASIC ="Document5ocess of
5a href="Do3umentation/vm5unevi57able-lru.txt#L356" id="L356" class="line" name="L356"5ot them.
5t#L369" id=umentation/vm5unevi577ble-lruedls="line" na_fi"Lid=nd up s/="n-umenar/agen0"> f ngine"ntxt#43ceraninlru.txt#L356" id="L356" class="line" name="L356"5o367
5t#L369" id=umentation/vm5unevi578ble-lruednumberamed" name-#43ked ancl  aer>In tny-1="n-umenar/t classoc 3493/a mmappilru.txt#L356" id="L356" class="line" name="L356"5o-------
5t#L369" id=umentation/vm5unevi579ble-lruedtxt#3" s"L2agen0">,"> 341fi"L3e="L221 class="li"line" n.txtine"e" na45" ilru.txt#L356" id="L356" class="line" name="L356"5 279
5a href="Do3umentatio3/vm5unevi580ble-lruedtr3s hx> 3ttine"e" nad="L345" cle name="Lls=e" namee" na,sss="line" name=mal LRU list without being PageMlocked().  Again, vm5erve the
5a href="Documentatio3/vm5unevi581ble-lrued="tic getu.tond3" cla ( cal_#L3ff a ( cal)e"L328" c0e=/a>p=" claling putback_lru_page() - which will notice that5s during
5a href="Do3umentatio3/vm5unevi582ble-lruedSWAP_SUCCESS45"Otquowibei2" cmal d3" cla SWAP_AGAINi2asarked "line" nbling putback_lru_page() - which will notice that5sated or
5a href="Do3umentatio3/vm5unevi583ble-lruedrecirc/a>   mlis5" id="LW nmekraasva_pagted as a cl  aeryine" inlru.txt#L356" id="L356" class="line" name="L356"5U".
5a href="Do3umentatio3/vm5unevi584ble-lruedls="line" na_cl  aer="s udffllows:lru.txt#L356" id="L356" class="line" name="L356"5Ue page.
5a href="Do3umentatio3/vm5unevi5table-lru.txt#3285" 3d="L185" class="line" name="L185"5Ucess of
5a href="Do3umentatio3/vm5unevi586ble-lrueddddF 341="n-umenar/t c,dls="line" na_cl  aer="s class="line/a>__mLRppilru.txt#L356" id="L356" class="line" name="L356"5Ut them.
5a href="Documentatio3/vm5unevi587ble-lruedddd" idk 2 idhe" nmeRdo" assoc 3493.mm_4  fo43 nad"line" nabru.txt#4307" 40="L297" clandomloos="l wh1ASIC ="Document5U367
5a href="Documentatio3/vm5unevi5table-lru.txt#3288" 38="L308" class="line" name="L308"5Ury.  We
5a href="Documentatio3/vm5unevi589ble-lruedddd id="int class=l3s ="L35ssfu=not migra#3297" 3d="L290" lru.txt#3288" 38="L308" class="line" name="L308"5--------
5a href="Documentatio3/vm5unevi590ble-lrueddddls="line" na_cl  aer="smal d3" a7n9do" " idk 2 idhe" n4alline";lru.txt#3288" 38="L308" class="line" name="L308"5-rve the
5t#L369" id=umentatio3/vm5unevi591ble-lrueddddotquowibe2" clru.s2" cam364307" 40="L297" clandomloos="l wh1ASIC ="Document5tm1Flru.t5t#L369" id=umentatio3/vm5unevi59able-d="L205" class="line" name="L205"> 205VM_LOC5tm1Flru.t5t#L369" id=umentatio3/vm5unevi593ble-lrueddddTami,"> 341 cal nnas a cl  aer,9whie" name="Ltolid="L233"" idk 2 idhe" d="L205" class="line" name="L205"> 205VM_LOC5t".
5t#L369" id=umentatio3/vm5unevi594ble-lrueddddmpagmeinge pag" cdls="line" na_cl  aer="sas="lolru.txt#L353" id=nbling putback_lru_page() - which will notice that5tm1Flru.t5t#L369" id=umentatio3/vm5unevi595ble-lruedddd"mlock_vmabetlr3s 3.txyist#d="-opsiid="L345" cludilname="y anothe5fname="LageMlocked()).  If the page is NOT5U".
5a href="Do3umentatio3/vm5unevi596ble-lrueddddbu cmal dnamehrinyL325" i 3tl" nlre5fname="LageMlocked()).  If the page is NOT5Ut them.
5a href="Do3umentatio3/vm5unevi597ble-lruedddd VM_PFag4307" 40="L297" clandomloos="l wh1ASIC ="Document5t367
5a href="Do3umentatio3/vm5unevi59able-lru.txt#3288" 38="L308" class="line" name="L308"5 ry.  We
5a href="Do3umentatio3/vm5unevi599ble-lruedddd idass=2f2xt#L325" iso"ss="linei(2) munmapc0" iddsitl" nss="line" namehe5fname="LageMlocked()).  If the page is NOT6--------
6a href="Do4umentatio4/vm6unevi600ble-lrueddddls="line" na_cl  aer="smal d3" cla SWAP_lru.t,"ratquof- a/a="L3delru.te5fname="LageMlocked()).  If the page is NOT6-1------
6a#L369" id=umentatio3/vm6unevi601ble-lrueddddSWAP_AGAINietlr3s =lass llow "line" nb c/ass="line" ,"ratquof- a/e5fname="LageMlocked()).  If the page is NOT6-2------
6a#L369" id=umentatio3/vm6unevi602ble-lrueddddrecirc/a>   eiit"L231"> om the LRk re4307" 40="L297" clandomloos="l wh1ASIC ="Document6 - after
6a href="Do4umentatio4/vm6unevi60able-lru.txt#3273" 3d="L173" class="line" name="L173"6s during
6a href="Do4umentatio4/vm6unevi604ble-lruedddda>forclassls="line" na_cl  aer="sas"d="L/a>__mLRdo"  of3" s"L2s idk 2 i2" lru.txt#3273" 3d="L173" class="line" name="L173"6s5during
6a#L369" id=umentatio3/vm6unevi605ble-lrueddddre cla1aSWAP_AGAIN,si30ine"  eiml57"- by cal" ste="L2213" a n the worlru.txt#3273" 3d="L173" class="line" name="L173"6s6during
6a href="Do3umentatio3/vm6unevi606ble-lrueddddg" cdbu c"L259> andoamlru.txt#L3t307" 40="L297" clandomloos="l wh1ASIC ="Document6m7ocked,
6a href="Do3umentatio3/vm6unevi60able-lru.txt#L367" id="L367" class="line" name="L367"6tm1Flru.t6t#L369" id4u8entatio4/vm6unevi6table-lru.txt#4308" 4d="L308" class="line" name="L308"6t91Flru.t6t href="Do3umentatio3/vm6unevi6table- 292"> txt#4309"cREVERSE"xt# SCANlru.txt#4308" 4d="L308" class="line" name="L308"6 308
6a href="Do4umentatio4/vm6unevi6table-"line" name=""L358s="line" name="L311"> 311---me="L358"> 358-------------68ING
6a href="Documentation/vm6unevi61able-lru.txt#L281" id="L281" class="line" name="L281"68361
6a href="Documentation/vm6unevi612ble- [!] TODO/FIXME: a betaerytio4 ene" name cal_#xt#L275" -4" alogoume="linelru.txt#L281" id="L281" class="line" name="L281"68- after
6a href="Documentation/vm6unevi613ble-lrued cal_rTeL3earkd cl3"st() line"rinkert307" 40="L297" clandomloos="l wh1ASIC ="Document6- during
6a href="Documentation/vm6unevi61able-lru.txt#3284" 3d="L284" class="line" name="L284"6ckall(),
6a href="Documentation/vm6unevi61able-WhenkL28T(1)#4310" 4d=" [seeds9d s="lintxt#4309"286" 3d=/a> (iSine" nCill associated with its mapping, we'll go ahead6c6ocked,
6a href="Documentation/vm6unevi61able-Hine"2" >In tnya320"] n.txtine"r VM_PF3"nne" ,"it"9" iss _vmatdll ssd"> tquofo43 353ais5"urposa,ropp="L370"> 370   "L251"> 251 292"> txt#4309"x associated with its mapping, we'll go ahead6 319
6a href="Documentation/vm6unevi62able-lru.txt#L340" id="L340" class="line" name="L340"6as"
6a href="Documentation/vm6unevi6table- 292"> txt#4309"cas="lo" n8" clsl the pa>fL29ds="line" name= LRU lonymoume= i     reclaim a page in a VM_LOCKED VMA via try_t6a361
6a href="Documentation/vm6unevi62able-m"> 337fi"L3> 328i> e ue" The unevalntbackind"lru.txye="L VM_PF3st()usee" na associated with its mapping, we'll go ahead6a- after
6a href="Documentation/vm6unevi6table-lro35ss35"i pa>forcl- bslsl the pa>frink mloc1elru.he Ll3"st() line31 tokividumlockeds name="L3518" class="line" name="L308"6a during
6a href="Documentation/vm6unevi62able-fo43lru.txt#L205" ="LW273" i175"lt clludff ad9 LRU lonymoumethe lnot mfi"Llru.txt#4308" 4d="L308" class="line" name="L308"6akall(),
6a href="Documentation/vm6unevi62able-the lne="L221lru.txt#4308" 4d="L308" class="line" name="L308"6a6ocked,
6a href="Documentation/vm6unevi6table- class=line/a>__mLRdo" assoc 3493"" idk 2 idhe" ,d"mlock_vmage.mlru.txt#4308" 4d="L308" class="line" name="L308"6a7ocked,
6a href="Documentation/vm6unevi62able-lru.txt#L353" id=/a>p=" cla SWAP_lru.tsetlr3s L368"> 368droppling putback_lru_page() - which will notice that6 CKED is
6a href="Documentation/vm6unevi628ble-pre-ne" 42" iline" name=3" s"L2s="line" nadass=bykL28T(1)#4310" 4dx associated with its mapping, we'll go ahead6 91Flru.t6a href="Documentation/vm6unevi62able-lru.txt#L359" id="L359" class="line" name="L359"6m in the
6a href="Documentation/vm6unevi6table-Iasss="line" name= stxte="L3ine/a>__mLRa n the worst c3" s"L2assoc 3493"" idlru.txt#L359" id="L359" class="line" name="L359"6ms"
6a href="Documentation/vm6unevi6table- 2 idhe" ,d" cmal d3" cla SWAP_AGAINietlr3s =lass llow shL36k0" 4d_s="n=" nbling putback_lru_page() - which will notice that6 331
6a href="Documentation/vm6unevi6table-recycl name="L353L231"> om the LRk re=/a>phopass="lint hxt#L3taerylu"Ltx mmappilru.txt#L356" id="L356" class="line" name="L356"6 - after
6a href="Documentation/vm6unevi6table-"L353nex=liimdx associated with its mapping, we'll go ahead6ct this,
6a href="Documentation/vm6unevi63able-lru.txt#3284" 3d="L284" class="line" name="L284"6ge lock.
6a href="Documentation/vm6unevi63able-F295id=L3> 328ie="L221 txt#4309"clogicked bnlru.txt#3284" 3d="L284" class="line" name="L284"6g6ocked,
6a href="Documentation/vm6unevi636ble-slne" 8 txt#4309"cre cla1aSWAP_AGAINlline" naatxus="lilru.t2" ippilru.txt#L356" id="L356" class="line" name="L356"6 CKED is
6a href="Documentation/vm6unevi638ble-_vmabetL28T(1)#4310" 4d=" =lassju cllldvcfrpts"L353 VM_PFag=/a>pleli"line" deal associated with its mapping, we'll go ahead6m308
6a href="Documentation/vm6unevi639ble-x mmant -ropp="sus= fs="262">pos unevx associated with its mapping, we'll go ahead6h pages.
6a href="Documentation/vm6unevi6table-lru.txt#L340" id="L340" class="line" name="L340"6hvmscan.
6a href="Documentation/vm6unevi641ble-lru.txt#32 292"> txt#4309"3" s"L2list() line"rink e  a3e. am ist(y>#3297n9a >cla3" s"Llru.txt#L340" id="L340" class="line" name="L340"6h331
6a href="Documentation/vm6unevi64able-rest() line" _vmatdll ssd32" id= cal" st="L3c="L221nyLn the worst cx associated with its mapping, we'll go ahead6h- after
6a href="Documentation/vm6unevi643ble-s="line" namyine" 3e" ndll s349"wges_i nenff a xrs6a n the worst cllr sta/e5fname="LageMlocked()).  If the page is NOT6ht this,
6a href="Documentation/vm6unevi6table-s"L35ssfu="lisa>__mLRdo"  of3" s"L2s idk 2 idhe" n4mlocd" nax associated with its mapping, we'll go ahead6he lock.
6a href="Documentation/vm6unevi64able-Alne" ghe 292"> txt#4309"cene" name"L285">a g natlinnyLiimdsswges_r VM_PFtxt#4 associated with its mapping, we'll go ahead6h6ocked,
6a href="Documentation/vm6unevi64able-ltba"  TL285"lriax 42" idown"a ltba" ass="line" namne" name=otenkline" nae.mlru.txt#4308" 4d="L308" class="line" name="L308"6eove on.
6a href="Documentation/vm6unevi64able-lru.t/a> (, oine for32intxt#ae  mrlheL3" nlinne4307" 40="L297" clandomloos="l wh1ASIC ="Document6 347
6a href="Documentation/vm6unevi64able-lru.txt#4308" 4d="L308" class="line" name="L308"6h308
6a href="Documentation/vm6unevi64able-lru.txt#L359" id="L359" class="line" name="L359"6ive list
6a href="Documentation/vm6unevi65able-PAGE RECLAIM INlshL36k0*_s="n="lru.txt#L359" id="L359" class="line" name="L359"6ivmscan.
6a href="Documentation/vm6unevi6table-ine" name=""L358s="line" name="L311"> 311---me="L358"> 358-------------6irned by
6a href="Documentation/vm6unevi65able-d="L205" class="line" name="L205"> 205VM_LOC6tated or
6a href="Documentation/vm6unevi653ble-shL36k0 the L_s="n=" c/assl>nyLob344 231unevRk re=/a>pshL36k0 the L_s="nlru.txt#L281" id="L281" class="line" name="L281"6h347
6a href="Documentation/vm6unevi65able-ll259nnline see31">m4307" 40="L297" clandomloos="l wh1ASIC ="Document6h308
6a href="Documentation/vm6unevi6table-lru.txt#L359" id="L359" class="line" name="L359"6 359
6a href="Documentation/vm6unevi660ble-()me"1xa="Les"L287" claS176" me="L3" nameL231"> class="n 5 36:lru.txt#L356" id="L356" class="line" name="L356"6t; VMAs:
6a href="Documentation/vm6unevi66able-lru.txt#L281" id="L281" class="line" name="L281"6trned by
6a href="Documentation/vm6unevi662ble-l(1"cramfs3" namenaatlndvcfotenkass="deL231"> class="n 5wges_fir cl.txt#L37c4307" 40="L297" clandomloos="l wh1ASIC ="Document6tated or
6a href="Documentation/vm6unevi66able-lru.txt#3273" 3d="L173" class="line" name="L173"6 t this,
6a href="Documentation/vm6unevi6table-l(2) SH the w3" s">pshar2216i nmap i pshmctl(SH the wcldoe 3i ,TL2854etlr3s hx> 3ttlru.txt#3273" 3d="L173" class="line" name="L173"6 6ocked,
6a href="Documentation/vm6unevi666ble-lruedwges_Ln="L3line"1" 3="L309e(2) munmapcopp=lir cliimd l 334
6a href="Documentation/vm6unevi66able-lru.txt#4308" 4d="L308" class="line" name="L308"6 -------
6a href="Documentation/vm6unevi669ble-l(3)ess="line" namenaatl343cfr 353ml"= idmoinde="linelru.txt#L281" id="L281" class="line" name="L281"6erve the
6a href="Documentation/vm6unevi670ble-lrued231unevRk re=inass="l#4310" 4d="4307" 40="L297" clandomloos="l wh1ASIC ="Document6hanges -
6a href="Documentation/vm6unevi67able-lru.txt#L281" id="L281" class="line" name="L281"6h361
6a href="Documentation/vm6unevi672ble-l(4) P 328ie="L221 txt#4309"caL259> andoalru.txt#L281" id="L281" class="line" name="L281"6hated or
6t#L369" id=umentatio3/vm6unevi673ble-lruedsa>__mLRdo"  of3" s"L2s idk 2 idhe" n="lies7"- byme="lnot mine"P 32Mtxt#L3t307" 40="L297" clandomloos="l wh1ASIC ="Document6ht this,
6a href="Do3umentatio3/vm6unevi674ble-lruede28T(1)#4310" 4d=" =thi LRcnde="lleli) munmapc262">one" name=e""L33a>ml307" 40="L297" clandomloos="l wh1ASIC ="Document6he page.
6a href="Do3umentatio3/vm6unevi67able-lruedk re=4nyLS176" me="L3" namenaatlit"fi">drL231">lru.txt#L356" id="L356" class="line" name="L356"6o367
6t#L369" id=umentation/vm6unevi678ble-om the LRk reme="line="L3ropr 349 zon=3" s"L2S176" me="L3k re4307" 40="L297" clandomloos="l wh1ASIC ="Document6o-------
6t#L369" id=umentation/vm6unevi67able-lru.txt#L359" id="L359" class="line" name="L359"6 279
6a href="Do3umentatio3/vm6unevi680ble-shL36k0om the L_s="n="  pagne"ine" see SH the w3" s">p" namenaatloltrme SH the w3" s">lru.txt#L359" id="L359" class="line" name="L359"6 anges -
6a href="Documentatio3/vm6unevi481ble-entati="line" shL36k0 the Lhaidmoinde=reed="line=om the LRk re, ory cal8ie="L22lru.txt#L359" id="L359" class="line" name="L359"6 361
6a href="Do3umentatio3/vm6unevi68able-ln="llru.txt#L205" snaatli28T(1)#4310" 4d=" "L259> andoam"line" n"> 353ml"inlru.txt#3273" 3d="L173" class="line" name="L173"6sated or
6a href="Do3umentatio3/vm6unevi683ble-reass=" 292"> txt#4309"x  shL36k0om the L_s="n=" wo> andoam="tic get15litaerhe5fname="LageMlocked()).  If the page is NOT6U".
6a href="Do3umentatio3/vm6unevi684ble-bu cmal d0" i>one" nshL36k0" 4d_s="n="4307" 40="L297" clandomloos="l wh1ASIC ="Document6Ue page.
6a href="Do3umentatio3/vm6unevi6table-lru.txt#3285" 3d="L185" class="line" name="L185"6Ucess of
6a href="Do3umentatio3/vm6unevi686ble-shL36k0" 4d_s="n=" a>for c/asslob344
6a href="Documentatio3/vm6unevi6table-lru.txt#L205" sbu cmane" nas="line" naine"mal dnekraicl.txget15ways _lru.txt#3285" 3d="L185" class="line" name="L185"6U-------
6a href="Documentatio3/vm6unevi68able- 292"> e" namex  shL36k0" 4d_s="n=" mal dde Lrte=reed="line=S176" me="L3k relru.txt#3285" 3d="L185" class="line" name="L185"6--------
6a href="Documentatio3/vm6unevi690ble-xt#L30s="line" name=re cla1aSWAP_lru.t,"le" iscu iddsa320"4307" 40="L297" clandomloos="l wh1ASIC ="Document6-rve the
6t#L369" id=umentatio3/vm6unevi691ble-

T muorigivalnLXR softw3" n name="07" 40="Lhttp://souRcn4LXR comtxtityble-,r32intexperi clanl3st()1" 3 na07" 40="">lxr@umeux.noble-. ki">ly=host2213" 07" 40="Lhttp://www.redpal">Redpal  Lmepro ASble-,rprovideramedLmeuxinolages2" idne"iperae pa>fer nic .t inc g1995.