)]}'
{
  "commit": "8707d8b8c0cbdf4441507f8dded194167da896c7",
  "tree": "1e9ac6b15027bd55263378e551c1595a937d66d6",
  "parents": [
    "020958b6272882c1a8bfbe5f3e0927f3845c2698"
  ],
  "author": {
    "name": "Paul Menage",
    "email": "menage@google.com",
    "time": "Thu Oct 18 23:40:22 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Oct 19 11:53:41 2007 -0700"
  },
  "message": "Fix cpusets update_cpumask\n\nCause writes to cpuset \"cpus\" file to update cpus_allowed for member tasks:\n\n- collect batches of tasks under tasklist_lock and then call\n  set_cpus_allowed() on them outside the lock (since this can sleep).\n\n- add a simple generic priority heap type to allow efficient collection\n  of batches of tasks to be processed without duplicating or missing any\n  tasks in subsequent batches.\n\n- make \"cpus\" file update a no-op if the mask hasn\u0027t changed\n\n- fix race between update_cpumask() and sched_setaffinity() by making\n  sched_setaffinity() post-check that it\u0027s not running on any cpus outside\n  cpuset_cpus_allowed().\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Serge Hallyn \u003cserue@us.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": "08094350f26a5b0bbdcac66741cd1dc98ac8b65c",
      "new_mode": 33188,
      "new_path": "include/linux/prio_heap.h"
    },
    {
      "type": "modify",
      "old_id": "64ad59cfad9bc7c0d59e66616262c4dcc9c8608a",
      "old_mode": 33188,
      "old_path": "kernel/cpuset.c",
      "new_id": "fa31cb9f98984fcd88483400c79cbf34969e0bc3",
      "new_mode": 33188,
      "new_path": "kernel/cpuset.c"
    },
    {
      "type": "modify",
      "old_id": "39d6354af489da3cfb9ab493666671b17ec02f08",
      "old_mode": 33188,
      "old_path": "kernel/sched.c",
      "new_id": "72a809a54d5ba160e38e6ddb5e61597b601a9f18",
      "new_mode": 33188,
      "new_path": "kernel/sched.c"
    },
    {
      "type": "modify",
      "old_id": "c5f215d509d3e36429f8f9a8eb1fd52fb9411dcc",
      "old_mode": 33188,
      "old_path": "lib/Makefile",
      "new_id": "3a0983b77412cdc6b0336bb0e3e1f539ddc2d0cd",
      "new_mode": 33188,
      "new_path": "lib/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "471944a54e23ecb964397a76716ea60236c5fdf3",
      "new_mode": 33188,
      "new_path": "lib/prio_heap.c"
    }
  ]
}
