)]}'
{
  "commit": "470fd646444c65a5d062a371f5ec8dcedee61239",
  "tree": "59b923486d4a95efa07c4b2ad7cb0b1fcc3f3c88",
  "parents": [
    "bd89aabc6761de1c35b154fe6f914a445d301510"
  ],
  "author": {
    "name": "Cliff Wickman",
    "email": "cpw@sgi.com",
    "time": "Thu Oct 18 23:40:46 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Oct 19 11:53:44 2007 -0700"
  },
  "message": "hotplug cpu: migrate a task within its cpuset\n\nWhen a cpu is disabled, move_task_off_dead_cpu() is called for tasks that have\nbeen running on that cpu.\n\nCurrently, such a task is migrated:\n 1) to any cpu on the same node as the disabled cpu, which is both online\n    and among that task\u0027s cpus_allowed\n 2) to any cpu which is both online and among that task\u0027s cpus_allowed\n\nIt is typical of a multithreaded application running on a large NUMA system to\nhave its tasks confined to a cpuset so as to cluster them near the memory that\nthey share.  Furthermore, it is typical to explicitly place such a task on a\nspecific cpu in that cpuset.  And in that case the task\u0027s cpus_allowed\nincludes only a single cpu.\n\nThis patch would insert a preference to migrate such a task to some cpu within\nits cpuset (and set its cpus_allowed to its entire cpuset).\n\nWith this patch, migrate the task to:\n 1) to any cpu on the same node as the disabled cpu, which is both online\n    and among that task\u0027s cpus_allowed\n 2) to any online cpu within the task\u0027s cpuset\n 3) to any cpu which is both online and among that task\u0027s cpus_allowed\n\nIn order to do this, move_task_off_dead_cpu() must make a call to\ncpuset_cpus_allowed_locked(), a new subset of cpuset_cpus_allowed(), that will\nnot block.  (name change - per Oleg\u0027s suggestion)\n\nCalls are made to cpuset_lock() and cpuset_unlock() in migration_call() to set\nthe cpuset mutex during the whole migrate_live_tasks() and\nmigrate_dead_tasks() procedure.\n\n[akpm@linux-foundation.org: build fix]\n[pj@sgi.com: Fix indentation and spacing]\nSigned-off-by: Cliff Wickman \u003ccpw@sgi.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.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": "modify",
      "old_id": "b6d24c22274b8dfb0ea28c3e841594779f5b20e7",
      "old_mode": 33188,
      "old_path": "Documentation/cpu-hotplug.txt",
      "new_id": "a741f658a3c9d7393c9693bb4486d30473438222",
      "new_mode": 33188,
      "new_path": "Documentation/cpu-hotplug.txt"
    },
    {
      "type": "modify",
      "old_id": "31adfde1c95f61588e3464003b14edbd5adf1945",
      "old_mode": 33188,
      "old_path": "include/linux/cpuset.h",
      "new_id": "ecae585ec3da97fce87fa5703e64d51519522d59",
      "new_mode": 33188,
      "new_path": "include/linux/cpuset.h"
    },
    {
      "type": "modify",
      "old_id": "fa31cb9f98984fcd88483400c79cbf34969e0bc3",
      "old_mode": 33188,
      "old_path": "kernel/cpuset.c",
      "new_id": "50f5dc46368841de3497fe96534df12b871e530b",
      "new_mode": 33188,
      "new_path": "kernel/cpuset.c"
    },
    {
      "type": "modify",
      "old_id": "a7e30462600ffb2a4a8b9be900e907c95ba13bed",
      "old_mode": 33188,
      "old_path": "kernel/sched.c",
      "new_id": "4071306e1088ac8652e71e36a5babc37385390d0",
      "new_mode": 33188,
      "new_path": "kernel/sched.c"
    }
  ]
}
