)]}'
{
  "commit": "05085e5ea6ef2eedf3dde3c0207295e39015dbe6",
  "tree": "7ff675f36ef32d90977f846a8a65189cc20e80f3",
  "parents": [
    "d6866d1ab678fcca24766798b7628cc9888e016c"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Thu Apr 20 16:42:01 2023 -1000"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Thu Apr 20 16:42:01 2023 -1000"
  },
  "message": "workqueue: Don\u0027t implicitly make UNBOUND workqueues w/ @max_active\u003d\u003d1 ordered\n\n5c0338c68706 (\"workqueue: restore WQ_UNBOUND/max_active\u003d\u003d1 to be ordered\")\nautomoatically promoted UNBOUND workqueues w/ @max_active\u003d\u003d1 to ordered\nworkqueues because UNBOUND workqueues w/ @max_active\u003d\u003d1 used to be the way\nto create ordered workqueues and the new NUMA support broke it. These\nproblems can be subtle and the fact that they can only trigger on NUMA\nmachines made them even more difficult to debug.\n\nHowever, overloading the UNBOUND allocation interface this way creates other\nissues. It\u0027s difficult to tell whether a given workqueue actually needs to\nbe ordered and users that legitimately want a min concurrency level wq\nunexpectedly gets an ordered one instead. With planned UNBOUND workqueue\nudpates to improve execution locality and more prevalence of chiplet designs\nwhich can benefit from such improvements, this isn\u0027t a state we wanna be in\nforever.\n\nThere aren\u0027t that many UNBOUND w/ @max_active\u003d\u003d1 users in the tree and the\npreceding patches audited all and converted them to\nalloc_ordered_workqueue() as appropriate. This patch removes the implicit\npromotion of UNBOUND w/ @max_active\u003d\u003d1 workqueues to ordered ones.\n\nWorkqueue will also add a debug option to make all unordered UNBOUND\nworkqueues to use per-cpu pool_workqueues so that these problems can be\nsurfaced easier on most machines.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ac551b8ee7d9f2f49a90fe3225e51bd41161809e",
      "old_mode": 33188,
      "old_path": "include/linux/workqueue.h",
      "new_id": "e547a90f032866a33c433920cfb4be47be28786a",
      "new_mode": 33188,
      "new_path": "include/linux/workqueue.h"
    },
    {
      "type": "modify",
      "old_id": "b8b541caed4854a4f90728ccbf24b8d5f6c26cfc",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "00bdcc3c5b367eba587314c70939528fe6ad8eff",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
