)]}'
{
  "commit": "822d8405d13931062d653e0c2cc0199ed801b072",
  "tree": "388738869c771c58d20bc24d25729fabc0aab171",
  "parents": [
    "14a40ffccd6163bbcd1d6f32b28a88ffe6149fc6"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Mar 19 13:45:21 2013 -0700"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Mar 19 13:45:21 2013 -0700"
  },
  "message": "workqueue: convert worker_pool-\u003eworker_ida to idr and implement for_each_pool_worker()\n\nMake worker_ida an idr - worker_idr and use it to implement\nfor_each_pool_worker() which will be used to simplify worker rebinding\non CPU_ONLINE.\n\npool-\u003eworker_idr is protected by both pool-\u003emanager_mutex and\npool-\u003elock so that it can be iterated while holding either lock.\n\n* create_worker() allocates ID without installing worker pointer and\n  installs the pointer later using idr_replace().  This is because\n  worker ID is needed when creating the actual task to name it and the\n  new worker shouldn\u0027t be visible to iterations before fully\n  initialized.\n\n* In destroy_worker(), ID removal is moved before kthread_stop().\n  This is again to guarantee that only fully working workers are\n  visible to for_each_pool_worker().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "39a591f65b08d45d7fe08e9dbba2deb73fe51dd2",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "384ff34c9aff362515a25077743792b2b39d4bcd",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
