)]}'
{
  "commit": "4e649152cbaa1aedd01821d200ab9d597fe469e4",
  "tree": "635fa7d75acda929e81b8b0db7e641b7d4e07b35",
  "parents": [
    "3dece8347df6a16239fab10dadb370854f1c969c"
  ],
  "author": {
    "name": "KAMEZAWA Hiroyuki",
    "email": "kamezawa.hiroyu@jp.fujitsu.com",
    "time": "Thu Oct 01 15:44:11 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Oct 01 16:11:13 2009 -0700"
  },
  "message": "memcg: some modification to softlimit under hierarchical memory reclaim.\n\nThis patch clean up/fixes for memcg\u0027s uncharge soft limit path.\n\nProblems:\n  Now, res_counter_charge()/uncharge() handles softlimit information at\n  charge/uncharge and softlimit-check is done when event counter per memcg\n  goes over limit. Now, event counter per memcg is updated only when\n  memory usage is over soft limit. Here, considering hierarchical memcg\n  management, ancesotors should be taken care of.\n\n  Now, ancerstors(hierarchy) are handled in charge() but not in uncharge().\n  This is not good.\n\n  Prolems:\n  1. memcg\u0027s event counter incremented only when softlimit hits. That\u0027s bad.\n     It makes event counter hard to be reused for other purpose.\n\n  2. At uncharge, only the lowest level rescounter is handled. This is bug.\n     Because ancesotor\u0027s event counter is not incremented, children should\n     take care of them.\n\n  3. res_counter_uncharge()\u0027s 3rd argument is NULL in most case.\n     ops under res_counter-\u003elock should be small. No \"if\" sentense is better.\n\nFixes:\n  * Removed soft_limit_xx poitner and checks in charge and uncharge.\n    Do-check-only-when-necessary scheme works enough well without them.\n\n  * make event-counter of memcg incremented at every charge/uncharge.\n    (per-cpu area will be accessed soon anyway)\n\n  * All ancestors are checked at soft-limit-check. This is necessary because\n    ancesotor\u0027s event counter may never be modified. Then, they should be\n    checked at the same time.\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.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": "731af71cddc9b1a8f3fb326f08f4d0bec048e08e",
      "old_mode": 33188,
      "old_path": "include/linux/res_counter.h",
      "new_id": "fcb9884df6181827120dcb64efd7a2104fd157d7",
      "new_mode": 33188,
      "new_path": "include/linux/res_counter.h"
    },
    {
      "type": "modify",
      "old_id": "88faec23e83301e5b64490318aba2ac722dfb00c",
      "old_mode": 33188,
      "old_path": "kernel/res_counter.c",
      "new_id": "bcdabf37c40b58165d29a2e7dc33b41ef9a6d547",
      "new_mode": 33188,
      "new_path": "kernel/res_counter.c"
    },
    {
      "type": "modify",
      "old_id": "21a30629ca801d5a400837b1289a03dd03a77450",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "1ae8c439584a5c255727bf6cca9f402ae6e13153",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    }
  ]
}
