Patch 1 describes the real problem that I was going to solve. While fixing this, I stumbled across some more migration problems that are included in this series. Some refactoring is still left to do after this, but I'd prefer to keep this series with the hard stuff short.
This is the test case that I was using: $ cat blkdebug.conf [inject-error] state = "2" event = "read_aio" errno = "7" immediately = "off" once = "on" [set-state] state = "1" event = "read_aio" new_state = "2" [set-state] state = "2" event = "read_aio" new_state = "3" $ x86_64-softmmu/qemu-system-x86_64 -drive file=blkdebug:blkdebug.conf:disk.qcow2,rerror=stop,werror=stop -incoming tcp::1028 $ x86_64-softmmu/qemu-system-x86_64 -drive file=blkdebug:blkdebug.conf:disk.qcow2,rerror=stop,werror=stop (qemu) migrate tcp::1028 Please note that you need to use a qcow2 image, or the blkdebug events won't be triggered. Expected result: The very first read from the disk (BIOS reading the MBR) fails and stops the VM. I migrate while the VM is stopped, so that the request is queued for resubmission. After continuing, the VM should work just as normal. Kevin Wolf (3): ide: Split error status from status register ide: Fix ide_drive_pio_state_needed() ide: Add forgotten VMSTATE_END_OF_LIST in subsection hw/ide/core.c | 32 +++++++++++++++++++++- hw/ide/internal.h | 8 ++++++ hw/ide/pci.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++----- hw/ide/pci.h | 4 +++ 4 files changed, 108 insertions(+), 9 deletions(-) -- 1.7.5.2