)]}'
{
  "commit": "f406c03c093f1451ac0ba7fde31eeb78e5e5e417",
  "tree": "52b1a39551c0db3c413c42e49ec3e9f01f800dc6",
  "parents": [
    "a3206972a9eab65ec8e8f9ae320ad628ba4b58f1"
  ],
  "author": {
    "name": "Alexander Yarygin",
    "email": "yarygin@linux.vnet.ibm.com",
    "time": "Wed Jun 10 14:38:17 2015 +0300"
  },
  "committer": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Tue Jun 23 15:06:16 2015 +0100"
  },
  "message": "block: Let bdrv_drain_all() to call aio_poll() for each AioContext\n\nAfter the commit 9b536adc (\"block: acquire AioContext in\nbdrv_drain_all()\") the aio_poll() function got called for every\nBlockDriverState, in assumption that every device may have its own\nAioContext. If we have thousands of disks attached, there are a lot of\nBlockDriverStates but only a few AioContexts, leading to tons of\nunnecessary aio_poll() calls.\n\nThis patch changes the bdrv_drain_all() function allowing it find shared\nAioContexts and to call aio_poll() only for unique ones.\n\nCc: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCc: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nCc: Kevin Wolf \u003ckwolf@redhat.com\u003e\nCc: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nCc: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nSigned-off-by: Alexander Yarygin \u003cyarygin@linux.vnet.ibm.com\u003e\nReviewed-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nTested-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nMessage-id: 1433936297-7098-4-git-send-email-yarygin@linux.vnet.ibm.com\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9cc729be7eeee9143c5a79f2bd611310b219e5c8",
      "old_mode": 33188,
      "old_path": "block/io.c",
      "new_id": "43f85ab452de5fdf9b6d5fc87ccf3fefc279a596",
      "new_mode": 33188,
      "new_path": "block/io.c"
    }
  ]
}
