)]}'
{
  "commit": "ddbcc7e8e50aefe467c01cac3dec71f118cd8ac2",
  "tree": "0881a031e669582f819d572339e955b04abfc3d2",
  "parents": [
    "55a230aae650157720becc09cadb7d10efbf5013"
  ],
  "author": {
    "name": "Paul Menage",
    "email": "menage@google.com",
    "time": "Thu Oct 18 23:39:30 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Oct 19 11:53:36 2007 -0700"
  },
  "message": "Task Control Groups: basic task cgroup framework\n\nGeneric Process Control Groups\n--------------------------\n\nThere have recently been various proposals floating around for\nresource management/accounting and other task grouping subsystems in\nthe kernel, including ResGroups, User BeanCounters, NSProxy\ncgroups, and others.  These all need the basic abstraction of being\nable to group together multiple processes in an aggregate, in order to\ntrack/limit the resources permitted to those processes, or control\nother behaviour of the processes, and all implement this grouping in\ndifferent ways.\n\nThis patchset provides a framework for tracking and grouping processes\ninto arbitrary \"cgroups\" and assigning arbitrary state to those\ngroupings, in order to control the behaviour of the cgroup as an\naggregate.\n\nThe intention is that the various resource management and\nvirtualization/cgroup efforts can also become task cgroup\nclients, with the result that:\n\n- the userspace APIs are (somewhat) normalised\n\n- it\u0027s easier to test e.g. the ResGroups CPU controller in\n conjunction with the BeanCounters memory controller, or use either of\nthem as the resource-control portion of a virtual server system.\n\n- the additional kernel footprint of any of the competing resource\n management systems is substantially reduced, since it doesn\u0027t need\n to provide process grouping/containment, hence improving their\n chances of getting into the kernel\n\nThis patch:\n\nAdd the main task cgroups framework - the cgroup filesystem, and the\nbasic structures for tracking membership and associating subsystem state\nobjects to tasks.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.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": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4717887fd75d2f2b758616c1aaef473f20d2f667",
      "new_mode": 33188,
      "new_path": "Documentation/cgroups.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "60735dcf427a85a2450d3c42dca028e65267d099",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f8eddbbcad9a29e096112e3d7503415342540f1b",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup_subsys.h"
    },
    {
      "type": "modify",
      "old_id": "722d4755060f7deee6f403ee7a5aafed5a914c25",
      "old_mode": 33188,
      "old_path": "include/linux/magic.h",
      "new_id": "1fa0c2ce4dec09456f5cb6c2480f6be5e5eb908a",
      "new_mode": 33188,
      "new_path": "include/linux/magic.h"
    },
    {
      "type": "modify",
      "old_id": "10a83d8d5775d370c6eac6ff6b8488e07e9b7579",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "af2ed4bae6789c2ad70bf4b35c43bd566669854a",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "a29a688c47d3128dc63fed1c70e799351ca38449",
      "old_mode": 33188,
      "old_path": "init/Kconfig",
      "new_id": "51b3d14f44f1d5fa3545f7d08b785aec18e747ca",
      "new_mode": 33188,
      "new_path": "init/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "9def935ab13a27c829e28bb2830cdbe2c6fd900d",
      "old_mode": 33188,
      "old_path": "init/main.c",
      "new_id": "0dd0e7a1f6329fab9bfecb88f1363530459281e8",
      "new_mode": 33188,
      "new_path": "init/main.c"
    },
    {
      "type": "modify",
      "old_id": "001bd3b65dd18bcd8c20dedff2c522b22badb857",
      "old_mode": 33188,
      "old_path": "kernel/Makefile",
      "new_id": "ea8c8a12e19ae501c80955670fdb192369ca5a0d",
      "new_mode": 33188,
      "new_path": "kernel/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6ba857bec71ba5caeea419975037ef22d9ae8841",
      "new_mode": 33188,
      "new_path": "kernel/cgroup.c"
    }
  ]
}
