)]}'
{
  "commit": "2bb2ba9d51a8044a71a29608d2c4ef8f5b2d57a2",
  "tree": "5e58869c606c541d41a9bfa62aa6e8bc42cae5ac",
  "parents": [
    "f9be23d6da035241b7687b25e64401171986dcef"
  ],
  "author": {
    "name": "Frederic Weisbecker",
    "email": "fweisbec@gmail.com",
    "time": "Tue May 29 15:07:03 2012 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue May 29 16:22:27 2012 -0700"
  },
  "message": "rescounters: add res_counter_uncharge_until()\n\nWhen killing a res_counter which is a child of other counter, we need to\ndo\n\n\tres_counter_uncharge(child, xxx)\n\tres_counter_charge(parent, xxx)\n\nThis is not atomic and wastes CPU.  This patch adds\nres_counter_uncharge_until().  This function\u0027s uncharge propagates to\nancestors until specified res_counter.\n\n\tres_counter_uncharge_until(child, parent, xxx)\n\nNow the operation is atomic and efficient.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: Tejun Heo \u003ctj@kernel.org\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": "f3c4ec3626a280bfd1b7f8811c9ea2cc3502f213",
      "old_mode": 33188,
      "old_path": "Documentation/cgroups/resource_counter.txt",
      "new_id": "0c4a344e78fa4c32693bf231240597bee5a8fe2b",
      "new_mode": 33188,
      "new_path": "Documentation/cgroups/resource_counter.txt"
    },
    {
      "type": "modify",
      "old_id": "fb201896a8b07136db13bcef486fdb382b7ee3c2",
      "old_mode": 33188,
      "old_path": "include/linux/res_counter.h",
      "new_id": "5de7a146ead929e21ea3c988677b2eb2c0314efd",
      "new_mode": 33188,
      "new_path": "include/linux/res_counter.h"
    },
    {
      "type": "modify",
      "old_id": "bebe2b170d49ffd4c5b96590114f40d4d9fb69f9",
      "old_mode": 33188,
      "old_path": "kernel/res_counter.c",
      "new_id": "ad581aa2369a2ed8f925c395b2b4eadd9d8640f2",
      "new_mode": 33188,
      "new_path": "kernel/res_counter.c"
    }
  ]
}
