)]}'
{
  "commit": "1a5645bc901aea6f3f446888061b2b084bbf1ba6",
  "tree": "1100723a5bd190311eaac46ce6eff22bf69a9a86",
  "parents": [
    "f15fbcd7d857ca2ea20b57ba6dfe63aab89d0b8b"
  ],
  "author": {
    "name": "Frederic Weisbecker",
    "email": "fweisbec@gmail.com",
    "time": "Mon Feb 02 23:22:04 2009 -0800"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Feb 02 23:22:04 2009 -0800"
  },
  "message": "connector: create connector workqueue only while needed once\n\nThe netlink connector uses its own workqueue to relay the datas sent\nfrom userspace to the appropriate callback.  If you launch the test\nfrom Documentation/connector and change it a bit to send a high flow\nof data, you will see thousands of events coming to the \"cqueue\"\nworkqueue by looking at the workqueue tracer.\n\nThis flow of events can be sent very quickly. So, to not encumber the\nkevent workqueue and delay other jobs, the \"cqueue\" workqueue should\nremain.\n\nBut this workqueue is pointless most of the time, it will always be\ncreated (assuming you have built it of course) although only\ndeveloppers with specific needs will use it.\n\nSo avoid this \"most of the time useless task\", this patch proposes to\ncreate this workqueue only when needed once.  The first jobs to be\nsent to connector callbacks will be sent to kevent while the \"cqueue\"\nthread creation will be scheduled to kevent too.\n\nThe following jobs will continue to be scheduled to keventd until the\ncqueue workqueue is created, and then the rest of the jobs will\ncontinue to perform as usual, through this dedicated workqueue.\n\nEach time I tested this patch, only the first event was sent to\nkeventd, the rest has been sent to cqueue which have been created\nquickly.\n\nAlso, this patch fixes some trailing whitespaces on the connector files.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b6fe7e7a2c2fd71e6818a850fd6b8adbfd613bf5",
      "old_mode": 33188,
      "old_path": "drivers/connector/cn_queue.c",
      "new_id": "c769ef269fb5833e96b3ac32ece432c4ce1de564",
      "new_mode": 33188,
      "new_path": "drivers/connector/cn_queue.c"
    },
    {
      "type": "modify",
      "old_id": "bf4830082a135e126d9f35f1a72a7bf5b18fbecf",
      "old_mode": 33188,
      "old_path": "drivers/connector/connector.c",
      "new_id": "fd336c5a9057a8da729ebd2d3961cbb7b6a4c271",
      "new_mode": 33188,
      "new_path": "drivers/connector/connector.c"
    },
    {
      "type": "modify",
      "old_id": "34f2789d9b9b0e5208e8a2eeeb085b94573efb8d",
      "old_mode": 33188,
      "old_path": "include/linux/connector.h",
      "new_id": "fc65d219d88c55759d734f6c6fbfb50fff9a7805",
      "new_mode": 33188,
      "new_path": "include/linux/connector.h"
    }
  ]
}
