)]}'
{
  "commit": "7fe7b68b32ba609faeeee03556aac0eb1b187c91",
  "tree": "87877a95bedeae58e0232c12459608b1bdb4128f",
  "parents": [
    "185b43386ad999c80bdc58e41b87f05e5b3e8463"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon Mar 05 09:10:35 2012 +0100"
  },
  "committer": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Thu Apr 19 16:36:43 2012 +0200"
  },
  "message": "nbd: do not block in nbd_wr_sync if no data at all is available\n\nRight now, nbd_wr_sync will hang if no data at all is available on the\nsocket and the other side is not going to provide any.  Relax this by\nmaking it loop only for writes or partial reads.  This fixes a race\nwhere one thread is executing qemu_aio_wait() and another is executing\nmain_loop_wait().  Then, the select() call in main_loop_wait() can return\nstale data and call the \"readable\" callback with no data in the socket.\n\nReported-by: Laurent Vivier \u003claurent@vivier.eu\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1b0e384c3981b1eee48c5ee42c310232a4d17e90",
      "old_mode": 33188,
      "old_path": "block/nbd.c",
      "new_id": "e0af5b4725ddbea87e2ea6af4aca24b2e1423169",
      "new_mode": 33188,
      "new_path": "block/nbd.c"
    },
    {
      "type": "modify",
      "old_id": "b31b3b2a4f512411df5447bd11b9f6f2ef7fb3a0",
      "old_mode": 33188,
      "old_path": "nbd.c",
      "new_id": "4c6d7f193d6db95530d367a7146d15c1ea870122",
      "new_mode": 33188,
      "new_path": "nbd.c"
    }
  ]
}
