)]}'
{
  "commit": "28de2dcd88de31f50bbd43d9c2fcb046c3a727cb",
  "tree": "23658259614a06a9956daec2d1667c3c6b9af121",
  "parents": [
    "3b8242e0ea2a2c201ef3d1bd24080490dae33080"
  ],
  "author": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Tue Jan 14 11:41:35 2014 +0100"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Fri Jan 24 17:40:03 2014 +0100"
  },
  "message": "block: Assert serialisation assumptions in pwritev\n\nIf a request calls wait_serialising_requests() and actually has to wait\nin this function (i.e. a coroutine yield), other requests can run and\npreviously read data (like the head or tail buffer) could become\noutdated. In this case, we would have to restart from the beginning to\nread in the updated data.\n\nHowever, we\u0027re lucky and don\u0027t actually need to do that: A request can\nonly wait in the first call of wait_serialising_requests() because we\nmark it as serialising before that call, so any later requests would\nwait. So as we don\u0027t wait in practice, we don\u0027t have to reload the data.\n\nThis is an important assumption that may not be broken or data\ncorruption will happen. Document it with some assertions.\n\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\nReviewed-by: Max Reitz \u003cmreitz@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "04a3c5a94c548127eec39b20217fd7d8d530783b",
      "old_mode": 33188,
      "old_path": "block.c",
      "new_id": "e1b2c8d2df2d1f6f60ba286dd9d85d5bcc2cbcc0",
      "new_mode": 33188,
      "new_path": "block.c"
    }
  ]
}
