qemu/hw/ide
Dr. David Alan Gilbert a71754e5b0 atapi migration: Throw recoverable error to avoid recovery
(With the previous atapi_dma flag recovery)
If migration happens between the ATAPI command being written and the
bmdma being started, the DMA is dropped.  Eventually the guest times
out and recovers, but that can take many seconds.
(This is rare, on a pingpong reading the CD continuously I hit
this about ~1/30-1/50 migrates)

I don't think we've got enough state to be able to recover safely
at this point, so I throw a 'medium error, no seek complete'
that I'm assuming guests will try and recover from an apparently
dirty CD.

OK, it's a hack, the real solution is probably to push a lot of
ATAPI state into the migration stream, but this is a fix that
works with no stream changes. Tested only on Linux (both RHEL5
(pre-libata) and RHEL7).

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2015-02-06 17:24:20 +01:00
..
ahci.c ahci: replace SATA FIS type magic numbers with constants 2014-12-10 10:31:12 +01:00
ahci.h ahci: replace SATA FIS type magic numbers with constants 2014-12-10 10:31:12 +01:00
atapi.c atapi migration: Throw recoverable error to avoid recovery 2015-02-06 17:24:20 +01:00
cmd646.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
core.c Restore atapi_dma flag across migration 2015-02-06 17:24:20 +01:00
ich.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
internal.h atapi migration: Throw recoverable error to avoid recovery 2015-02-06 17:24:20 +01:00
isa.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
macio.c ide: Correct handling of malformed/short PRDTs 2014-11-14 09:20:35 +00:00
Makefile.objs
microdrive.c hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
mmio.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
pci.c atapi migration: Throw recoverable error to avoid recovery 2015-02-06 17:24:20 +01:00
pci.h block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
piix.c fix off-by-one error in pci_piix3_xen_ide_unplug 2014-10-30 14:16:39 +00:00
qdev.c ide: Check validity of logical block size 2014-12-10 10:31:16 +01:00
via.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00