)]}'
{
  "commit": "315601809d124d046abd6c3ffa346d0dbd7aa29d",
  "tree": "be48e1a0053e3ada3a5c25561923f1b87f8e1719",
  "parents": [
    "481b4bb5e370aa69c1dc276bd08871ec01b41d2a"
  ],
  "author": {
    "name": "Minchan Kim",
    "email": "minchan.kim@gmail.com",
    "time": "Tue Mar 22 16:32:52 2011 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Mar 22 17:44:03 2011 -0700"
  },
  "message": "mm: deactivate invalidated pages\n\nRecently, there are reported problem about thrashing.\n(http://marc.info/?l\u003drsync\u0026m\u003d128885034930933\u0026w\u003d2) It happens by backup\nworkloads(ex, nightly rsync).  That\u0027s because the workload makes just\nuse-once pages and touches pages twice.  It promotes the page into active\nlist so that it results in working set page eviction.\n\nSome app developer want to support POSIX_FADV_NOREUSE.  But other OSes\ndon\u0027t support it, either.\n(http://marc.info/?l\u003dlinux-mm\u0026m\u003d128928979512086\u0026w\u003d2)\n\nBy other approach, app developers use POSIX_FADV_DONTNEED.  But it has a\nproblem.  If kernel meets page is writing during invalidate_mapping_pages,\nit can\u0027t work.  It makes for application programmer to use it since they\nalways have to sync data before calling fadivse(..POSIX_FADV_DONTNEED) to\nmake sure the pages could be discardable.  At last, they can\u0027t use\ndeferred write of kernel so that they could see performance loss.\n(http://insights.oetiker.ch/linux/fadvise.html)\n\nIn fact, invalidation is very big hint to reclaimer.  It means we don\u0027t\nuse the page any more.  So let\u0027s move the writing page into inactive\nlist\u0027s head if we can\u0027t truncate it right now.\n\nWhy I move page to head of lru on this patch, Dirty/Writeback page would\nbe flushed sooner or later.  It can prevent writeout of pageout which is\nless effective than flusher\u0027s writeout.\n\nOriginally, I reused lru_demote of Peter with some change so added his\nSigned-off-by.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReported-by: Ben Gamari \u003cbgamari.foss@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.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": "4d559325d919fb5fa194d6a7e61711ae52e01192",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "c335055c4253e49a18f5513cc65db47162802bb6",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "c02f93611a849e6c79bdbae2e13ee6e4cff6eb37",
      "old_mode": 33188,
      "old_path": "mm/swap.c",
      "new_id": "4aea806d0d441c7d58d4bc8be83103ff743e5289",
      "new_mode": 33188,
      "new_path": "mm/swap.c"
    },
    {
      "type": "modify",
      "old_id": "3d2ae1f423dc9b82854d023c0e498410318d76e1",
      "old_mode": 33188,
      "old_path": "mm/truncate.c",
      "new_id": "a9566752913596152022f5d22983cb4f2cb4d2cf",
      "new_mode": 33188,
      "new_path": "mm/truncate.c"
    }
  ]
}
