)]}'
{
  "commit": "4e41695356fb4e0b153be1440ad027e46e0a7ea2",
  "tree": "547dae77d1655a1acb260ea8b266c7b8a48f2d2c",
  "parents": [
    "75822b4495b62e8721e9b88e3cf9e653a0c85b73"
  ],
  "author": {
    "name": "Balbir Singh",
    "email": "balbir@linux.vnet.ibm.com",
    "time": "Wed Sep 23 15:56:39 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Sep 24 07:20:59 2009 -0700"
  },
  "message": "memory controller: soft limit reclaim on contention\n\nImplement reclaim from groups over their soft limit\n\nPermit reclaim from memory cgroups on contention (via the direct reclaim\npath).\n\nmemory cgroup soft limit reclaim finds the group that exceeds its soft\nlimit by the largest number of pages and reclaims pages from it and then\nreinserts the cgroup into its correct place in the rbtree.\n\nAdd additional checks to mem_cgroup_hierarchical_reclaim() to detect long\nloops in case all swap is turned off.  The code has been refactored and\nthe loop check (loop \u003c 2) has been enhanced for soft limits.  For soft\nlimits, we try to do more targetted reclaim.  Instead of bailing out after\ntwo loops, the routine now reclaims memory proportional to the size by\nwhich the soft limit is exceeded.  The proportion has been empirically\ndetermined.\n\n[akpm@linux-foundation.org: build fix]\n[kamezawa.hiroyu@jp.fujitsu.com: fix softlimit css refcnt handling]\n[nishimura@mxp.nes.nec.co.jp: refcount of the \"victim\" should be decremented before exiting the loop]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "e46a0734ab6e68c9f4df95ce5f9771923af392ea",
      "old_mode": 33188,
      "old_path": "include/linux/memcontrol.h",
      "new_id": "bf9213b2db8f2da2a443d8788d2d70eb0a003af8",
      "new_mode": 33188,
      "new_path": "include/linux/memcontrol.h"
    },
    {
      "type": "modify",
      "old_id": "6c990e658f4ed33dc2244b1b8ef5d1649cc22a31",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "4c78fea989b9ca36c805fbec953f77ba458bc9bf",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "90f0b13e1c3c4f41d4e0d164bebc7f5bff37ebea",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "011aba6cad70fa58a887bf6220a888a8d4985598",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    },
    {
      "type": "modify",
      "old_id": "613e89f471d92c2710be84e9e0fdcf17b0976d0b",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "2423782214abf5da398d17c99d6605bfa265e329",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
