)]}'
{
  "commit": "dbc38c633f4b7abe97c53036df55fbb2040188bc",
  "tree": "57123eb96e4b840a3efd1fc4c51073f7229dd23d",
  "parents": [
    "6d51e762b1b58226ddaf922673970162e71c9ed9"
  ],
  "author": {
    "name": "Colin Cross",
    "email": "ccross@android.com",
    "time": "Tue Nov 23 21:37:04 2010 -0800"
  },
  "committer": {
    "name": "Colin Cross",
    "email": "ccross@android.com",
    "time": "Tue Jun 14 09:09:40 2011 -0700"
  },
  "message": "cgroup: Remove call to synchronize_rcu in cgroup_attach_task\n\nsynchronize_rcu can be very expensive, averaging 100 ms in\nsome cases.  In cgroup_attach_task, it is used to prevent\na task-\u003ecgroups pointer dereferenced in an RCU read side\ncritical section from being invalidated, by delaying the\ncall to put_css_set until after an RCU grace period.\n\nTo avoid the call to synchronize_rcu, make the put_css_set\ncall rcu-safe by moving the deletion of the css_set links\ninto free_css_set_work, scheduled by the rcu callback\nfree_css_set_rcu.\n\nThe decrement of the cgroup refcount is no longer\nsynchronous with the call to put_css_set, which can result\nin the cgroup refcount staying positive after the last call\nto cgroup_attach_task returns.  To allow the cgroup to be\ndeleted with cgroup_rmdir synchronously after\ncgroup_attach_task, have rmdir check the refcount of all\nassociated css_sets.  If cgroup_rmdir is called on a cgroup\nfor which the css_sets all have refcount zero but the\ncgroup refcount is nonzero, reuse the rmdir waitqueue to\nblock the rmdir until free_css_set_work is called.\n\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1af8c35ee8f4a48a333606b83ca8d6be50d12e4d",
      "old_mode": 33188,
      "old_path": "include/linux/cgroup.h",
      "new_id": "0c34e9c2e93fe740ee37d088bb62d47917ae5b66",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup.h"
    },
    {
      "type": "modify",
      "old_id": "55bd2be5ca72823e691e7979ff7f1ef62905b2df",
      "old_mode": 33188,
      "old_path": "kernel/cgroup.c",
      "new_id": "01ab75da0902a8f058e47dda44a57d0b70a8b6d3",
      "new_mode": 33188,
      "new_path": "kernel/cgroup.c"
    }
  ]
}
