)]}'
{
  "commit": "ed7c0feede39d70092d048ec30f59bb1df69eec6",
  "tree": "67ff89df1a5db2037da34ddf17002b4c7ff218df",
  "parents": [
    "06ba38a9a0f6ceffe70343f684c5a690e3710ef4"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Wed May 09 02:34:16 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Wed May 09 12:30:52 2007 -0700"
  },
  "message": "make queue_delayed_work() friendly to flush_fork()\n\nCurrently typeof(delayed_work-\u003ework.data) is\n\n\t\"struct workqueue_struct\" when the timer is pending\n\n\t\"struct cpu_workqueue_struct\" whe the work is queued\n\nThis makes impossible to use flush_fork(delayed_work-\u003ework) in addition\nto cancel_delayed_work/cancel_rearming_delayed_work, not good.\n\nChange queue_delayed_work/delayed_work_timer_fn to use cwq, not wq. This\ncomplicates (and uglifies) these functions a little bit, but alows us to\nuse flush_fork(dwork) and imho makes the whole code more consistent.\n\nAlso, document the fact that cancel_rearming_delayed_work() doesn\u0027t garantee\nthe completion of work-\u003efunc() upon return.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "7d1ebfc1a995cc1f2be53a283259c4a169c5f686",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "d107e1c3b071a01201e1f570d70e5b02b76bb481",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
