)]}'
{
  "commit": "a71754e5b03fd3b8b8c6d3bc2a39f75bead729de",
  "tree": "4e31554afb7c37219fa4a626c71c86abc56e9240",
  "parents": [
    "819fa276311ce328a8e38ad9306c1093961b3f4b"
  ],
  "author": {
    "name": "Dr. David Alan Gilbert",
    "email": "dgilbert@redhat.com",
    "time": "Tue Dec 09 18:15:09 2014 +0000"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Fri Feb 06 17:24:20 2015 +0100"
  },
  "message": "atapi migration: Throw recoverable error to avoid recovery\n\n(With the previous atapi_dma flag recovery)\nIf migration happens between the ATAPI command being written and the\nbmdma being started, the DMA is dropped.  Eventually the guest times\nout and recovers, but that can take many seconds.\n(This is rare, on a pingpong reading the CD continuously I hit\nthis about ~1/30-1/50 migrates)\n\nI don\u0027t think we\u0027ve got enough state to be able to recover safely\nat this point, so I throw a \u0027medium error, no seek complete\u0027\nthat I\u0027m assuming guests will try and recover from an apparently\ndirty CD.\n\nOK, it\u0027s a hack, the real solution is probably to push a lot of\nATAPI state into the migration stream, but this is a fix that\nworks with no stream changes. Tested only on Linux (both RHEL5\n(pre-libata) and RHEL7).\n\nSigned-off-by: Dr. David Alan Gilbert \u003cdgilbert@redhat.com\u003e\nReviewed-by: John Snow \u003cjsnow@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a71e6e014faba42ba3fbab503820aadf1f117bec",
      "old_mode": 33188,
      "old_path": "hw/ide/atapi.c",
      "new_id": "1bf8b345280dad450be0fe53ba6401c938306357",
      "new_mode": 33188,
      "new_path": "hw/ide/atapi.c"
    },
    {
      "type": "modify",
      "old_id": "c998003bf3b66f59bda7d5b36924f3a95a94baab",
      "old_mode": 33188,
      "old_path": "hw/ide/internal.h",
      "new_id": "ee9a57f03965733913e167a953d35f1bd854122d",
      "new_mode": 33188,
      "new_path": "hw/ide/internal.h"
    },
    {
      "type": "modify",
      "old_id": "bee5ad39fead973b9bc19dd776e6436178899aed",
      "old_mode": 33188,
      "old_path": "hw/ide/pci.c",
      "new_id": "e3f2054a9089189a9472a39790ea895f64c458a7",
      "new_mode": 33188,
      "new_path": "hw/ide/pci.c"
    }
  ]
}
