)]}'
{
  "commit": "ec64f51545fffbc4cb968f0cea56341a4b07e85a",
  "tree": "575d890a6759d81f3324fa2a22ca6ab14a41eefc",
  "parents": [
    "38460b48d06440de46b34cb778bd6c4855030754"
  ],
  "author": {
    "name": "KAMEZAWA Hiroyuki",
    "email": "kamezawa.hiroyu@jp.fujitsu.com",
    "time": "Thu Apr 02 16:57:26 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Apr 02 19:04:54 2009 -0700"
  },
  "message": "cgroup: fix frequent -EBUSY at rmdir\n\nIn following situation, with memory subsystem,\n\n\t/groupA use_hierarchy\u003d\u003d1\n\t\t/01 some tasks\n\t\t/02 some tasks\n\t\t/03 some tasks\n\t\t/04 empty\n\nWhen tasks under 01/02/03 hit limit on /groupA, hierarchical reclaim\nis triggered and the kernel walks tree under groupA. In this case,\nrmdir /groupA/04 fails with -EBUSY frequently because of temporal\nrefcnt from the kernel.\n\nIn general. cgroup can be rmdir\u0027d if there are no children groups and\nno tasks. Frequent fails of rmdir() is not useful to users.\n(And the reason for -EBUSY is unknown to users.....in most cases)\n\nThis patch tries to modify above behavior, by\n\t- retries if css_refcnt is got by someone.\n\t- add \"return value\" to pre_destroy() and allows subsystem to\n\t  say \"we\u0027re really busy!\"\n\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\nCc: 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": "93feb8444489686b1a9874da9c964f388d5ed316",
      "old_mode": 33188,
      "old_path": "Documentation/cgroups/cgroups.txt",
      "new_id": "cdc46a501b857fb67d8babb75b37bb537c19a328",
      "new_mode": 33188,
      "new_path": "Documentation/cgroups/cgroups.txt"
    },
    {
      "type": "modify",
      "old_id": "9a23bb0982057ba3798b013bf975d82a6d30a5b7",
      "old_mode": 33188,
      "old_path": "include/linux/cgroup.h",
      "new_id": "7d824b80b3d78a9fc4d216838344758cadf2f921",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup.h"
    },
    {
      "type": "modify",
      "old_id": "d3c521137425fbc10225ec6025458166c2df6d35",
      "old_mode": 33188,
      "old_path": "kernel/cgroup.c",
      "new_id": "fc5e4a48582f6473c4d4f3cbc0182d3e56c0e9df",
      "new_mode": 33188,
      "new_path": "kernel/cgroup.c"
    },
    {
      "type": "modify",
      "old_id": "8e4be9cb2a6a7642601516e3587d151dcea586f4",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "8ffec674c5acc6904a53c45c55deefc816ac8233",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    }
  ]
}
