)]}'
{
  "commit": "9e85cd5ce0d3fc99d910428c9fd9d267764d341b",
  "tree": "6874635d868df256fa3fc8145763b7558a74a61e",
  "parents": [
    "5a7e7a0bad17c96e03f55ed7019e2d7545e21a96"
  ],
  "author": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Tue Oct 21 12:03:59 2014 +0100"
  },
  "committer": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Mon Nov 03 11:41:49 2014 +0000"
  },
  "message": "block: let commit blockjob run in BDS AioContext\n\nThe commit block job must run in the BlockDriverState AioContext so that\nit works with dataplane.\n\nAcquire the AioContext in blockdev.c so starting the block job is safe.\nOne detail here is that the bdrv_drain_all() must be moved inside the\naio_context_acquire() region so requests cannot sneak in between the\ndrain and acquire.\n\nThe completion code in block/commit.c must perform backing chain\nmanipulation and bdrv_reopen() from the main loop.  Use\nblock_job_defer_to_main_loop() to achieve that.\n\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nReviewed-by: Max Reitz \u003cmreitz@redhat.com\u003e\nMessage-id: 1413889440-32577-11-git-send-email-stefanha@redhat.com\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "60a2accf043698d37d530ee25549bb9a3be7e0af",
      "old_mode": 33188,
      "old_path": "block/commit.c",
      "new_id": "cfa2bbebc25fb1156c39125566dc439fc72356e8",
      "new_mode": 33188,
      "new_path": "block/commit.c"
    },
    {
      "type": "modify",
      "old_id": "13763225ee8e5dc32ada143e40beee32f1ee1813",
      "old_mode": 33188,
      "old_path": "blockdev.c",
      "new_id": "57910b82c7adc3ce59173afeeebcd37ff2a3dfd0",
      "new_mode": 33188,
      "new_path": "blockdev.c"
    }
  ]
}
