)]}'
{
  "commit": "c8efcc2589464ac70255bb83e10cad61c7c6d295",
  "tree": "a7f9c975831344ba78d3a2f9d252749d0479ca2b",
  "parents": [
    "ed41390fa57a21d06e6e3a3c4bc238bab8957fbb"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Mon Dec 20 19:32:04 2010 +0100"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Mon Dec 20 19:32:04 2010 +0100"
  },
  "message": "workqueue: allow chained queueing during destruction\n\nCurrently, destroy_workqueue() makes the workqueue deny all new\nqueueing by setting WQ_DYING and flushes the workqueue once before\nproceeding with destruction; however, there are cases where work items\nqueue more related work items.  Currently, such users need to\nexplicitly flush the workqueue multiple times depending on the\npossible depth of such chained queueing.\n\nThis patch updates the queueing path such that a work item can queue\nfurther work items on the same workqueue even when WQ_DYING is set.\nThe flush on destruction is automatically retried until the workqueue\nis empty.  This guarantees that the workqueue is empty on destruction\nwhile allowing chained queueing.\n\nThe flush retry logic whines if it takes too many retries to drain the\nworkqueue.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e785b0f2aea57f362f9528fb979f15716f7f2aa4",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "8ee6ec82f88a9cc2982bfcd73bc3bd86dcd490a8",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
