)]}'
{
  "commit": "e04fb07fd1676e9facd7f3f878c1bbe03bccd26b",
  "tree": "e1b2da9e26610cbd77f4e846c9846797bebcf020",
  "parents": [
    "732c66ce641c69702a7e7fdb73b68f0c1b583ab5"
  ],
  "author": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Thu Dec 05 16:38:33 2013 +0100"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Wed Jan 22 12:07:16 2014 +0100"
  },
  "message": "rbd: switch from pipe to QEMUBH completion notification\n\nrbd callbacks are called from non-QEMU threads.  Up until now a pipe was\nused to signal completion back to the QEMU iothread.\n\nThe pipe writer code handles EAGAIN using select(2).  The select(2) API\nis not scalable since fd_set size is static.  FD_SET() can write beyond\nthe end of fd_set if the file descriptor number is too high.  (QEMU\u0027s\nmain loop uses poll(2) to avoid this issue with select(2).)\n\nSince the pipe itself is quite clumsy to use and QEMUBH is now\nthread-safe, just schedule a BH from the rbd callback function.  This\nway we can simplify I/O completion in addition to eliminating the\npotential FD_SET() crash when file descriptor numbers become too high.\n\nCrash scenario: QEMU already has 1024 file descriptors open.  Hotplug an\nrbd drive and get the pipe writer to take the select(2) code path.\n\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\nTested-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f453f047570c29b6e6d500676f7a899c2fdd1865",
      "old_mode": 33188,
      "old_path": "block/rbd.c",
      "new_id": "121fae221e5b900a7be0a4c106f9204ca9a8ed68",
      "new_mode": 33188,
      "new_path": "block/rbd.c"
    }
  ]
}
