)]}'
{
  "commit": "3af24433efac62f451bfdb1cf1edb7181fb73645",
  "tree": "330353b50a88615ef6e99440e8412667ae0a855e",
  "parents": [
    "36aa9dfc39bf473780439f5629c30f59d677e793"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Wed May 09 02:34:09 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Wed May 09 12:30:52 2007 -0700"
  },
  "message": "workqueue: don\u0027t migrate pending works from the dead CPU\n\nCurrently CPU_DEAD uses kthread_stop() to stop cwq-\u003ethread and then\ntransfers cwq-\u003eworklist to another CPU.  However, it is very unlikely that\nworker_thread() will notice kthread_should_stop() before flushing\ncwq-\u003eworklist.  It is only possible if worker_thread() was preempted after\nrun_workqueue(cwq), a new work_struct was added, and CPU_DEAD happened\nbefore cwq-\u003ethread has a chance to run.\n\nThis means that take_over_work() mostly adds unneeded complications.  Note\nalso that kthread_stop() is not good per se, wake_up_process() may confuse\nwork-\u003efunc() if it sleeps waiting for some event.\n\nRemove take_over_work() and migrate_sequence complications.  CPU_DEAD sets\nthe cwq-\u003eshould_stop flag (introduced by this patch) and waits for\ncwq-\u003ethread to flush cwq-\u003eworklist and exit.  Because the dead CPU is not\non cpu_online_map, no more works can be added to that cwq.\n\ncpu_populated_map was introduced to optimize for_each_possible_cpu(), it is\nnot strictly needed, and it is more a documentation in fact.\n\nSaves 418 bytes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Gautham shenoy \u003cego@in.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": "modify",
      "old_id": "398c34ff6a54a90eb82f90856a75a29dc210bc2d",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "a981add58fb9bca7c870d3a94c0034a9bed58789",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
