)]}'
{
  "commit": "029d091e4975af60ff9622717af19c5910f2f4e9",
  "tree": "2b66d9a1e0aef1800ee3cf9cda09d88d68d27cf2",
  "parents": [
    "8d2497c3552e19a60e7a75d20976471ecb2a8e2b"
  ],
  "author": {
    "name": "Peter Lieven",
    "email": "pl@dlhnet.de",
    "time": "Fri Jan 11 13:29:55 2013 +0100"
  },
  "committer": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Tue Jan 15 09:24:38 2013 +0100"
  },
  "message": "block: fix initialization in bdrv_io_limits_enable()\n\nbdrv_io_limits_enable() starts a new slice, but does not set io_base\ncorrectly for that slice.\n\nHere is how io_base is used:\n\n    bytes_base  \u003d bs-\u003enr_bytes[is_write] - bs-\u003eio_base.bytes[is_write];\n    bytes_res   \u003d (unsigned) nb_sectors * BDRV_SECTOR_SIZE;\n\n    if (bytes_base + bytes_res \u003c\u003d bytes_limit) {\n        /* no wait */\n    } else {\n        /* operation needs to be throttled */\n    }\n\nAs a result, any I/O operations that are triggered between now and\nbs-\u003eslice_end are incorrectly limited.  If 10 MB of data has been\nwritten since the VM was started, QEMU thinks that 10 MB of data has\nbeen written in this slice. This leads to a I/O lockup in the guest.\n\nWe fix this by delaying the start of a new slice to the next\ncall of bdrv_exceed_io_limits().\n\nSigned-off-by: Peter Lieven \u003cpl@kamp.de\u003e\nReviewed-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b5e64ecf1118dfce190ad9157d6256613bad93d2",
      "old_mode": 33188,
      "old_path": "block.c",
      "new_id": "4a90dd1a78175d5612a24fc3dada5e002fe18971",
      "new_mode": 33188,
      "new_path": "block.c"
    }
  ]
}
