)]}'
{
  "commit": "64d6519dda3905dfb94d3f93c07c5f263f41813f",
  "tree": "62cae88edcb858c42a5b4b568eb77801299250bb",
  "parents": [
    "5344b7e648980cc2ca613ec03a56a8222ff48820"
  ],
  "author": {
    "name": "Lee Schermerhorn",
    "email": "lee.schermerhorn@hp.com",
    "time": "Sat Oct 18 20:26:52 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Oct 20 08:52:31 2008 -0700"
  },
  "message": "swap: cull unevictable pages in fault path\n\nIn the fault paths that install new anonymous pages, check whether the\npage is evictable or not using lru_cache_add_active_or_unevictable().  If\nthe page is evictable, just add it to the active lru list [via the pagevec\ncache], else add it to the unevictable list.\n\nThis \"proactive\" culling in the fault path mimics the handling of mlocked\npages in Nick Piggin\u0027s series to keep mlocked pages off the lru lists.\n\nNotes:\n\n1) This patch is optional--e.g., if one is concerned about the\n   additional test in the fault path.  We can defer the moving of\n   nonreclaimable pages until when vmscan [shrink_*_list()]\n   encounters them.  Vmscan will only need to handle such pages\n   once, but if there are a lot of them it could impact system\n   performance.\n\n2) The \u0027vma\u0027 argument to page_evictable() is require to notice that\n   we\u0027re faulting a page into an mlock()ed vma w/o having to scan the\n   page\u0027s rmap in the fault path.   Culling mlock()ed anon pages is\n   currently the only reason for this patch.\n\n3) We can\u0027t cull swap pages in read_swap_cache_async() because the\n   vma argument doesn\u0027t necessarily correspond to the swap cache\n   offset passed in by swapin_readahead().  This could [did!] result\n   in mlocking pages in non-VM_LOCKED vmas if [when] we tried to\n   cull in this path.\n\n4) Move set_pte_at() to after where we add page to lru to keep it\n   hidden from other tasks that might walk the page table.\n   We already do it in this order in do_anonymous() page.  And,\n   these are COW\u0027d anon pages.  Is this safe?\n\n[riel@redhat.com: undo an overzealous code cleanup]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7edb4cbc29f9f51f2aaa2cb93d68b1088fc45bf1",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "07eda69412fbe56e00583be0dc41d037f29000d8",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "9fef7272fb9e81324959efeea12e7b74c6ce6262",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "450127f4c5820a30e694cbd9763aa353a50774a7",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    },
    {
      "type": "modify",
      "old_id": "bc58c1369dd6def1add1d55b0b53a605c6308e27",
      "old_mode": 33188,
      "old_path": "mm/swap.c",
      "new_id": "2152e48a7b8f0726f06a88c516d82a0becf3c19d",
      "new_mode": 33188,
      "new_path": "mm/swap.c"
    }
  ]
}
