On 17/12/2014 02:36, John Snow wrote: > Amazingly, we weren't doing this before. > > Make sure we migrate the IDEState structure that belongs to > the AHCIDevice.IDEBus structure during migrations. > > No version numbering changes because AHCI is not officially > migratable (and we can all see with good reason why) so we > do not impact any official builds by altering the stream and > leaving it at version 1. > > This fixes the rerror=stop/werror=stop test case where we wish > to migrate a halted job. Previously, the error code would not > migrate, so even if the job completed successfully, AHCI would > report an error because it would still have the placeholder > error code from initialization time. > > Signed-off-by: John Snow <js...@redhat.com>
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> > --- > hw/ide/ahci.c | 1 + > hw/ide/internal.h | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c > index bc6d5ce..3f4fc77 100644 > --- a/hw/ide/ahci.c > +++ b/hw/ide/ahci.c > @@ -1321,6 +1321,7 @@ static const VMStateDescription vmstate_ahci_device = { > .version_id = 1, > .fields = (VMStateField[]) { > VMSTATE_IDE_BUS(port, AHCIDevice), > + VMSTATE_IDE_DRIVE(port.ifs[0], AHCIDevice), > VMSTATE_UINT32(port_state, AHCIDevice), > VMSTATE_UINT32(finished, AHCIDevice), > VMSTATE_UINT32(port_regs.lst_addr, AHCIDevice), > diff --git a/hw/ide/internal.h b/hw/ide/internal.h > index 0beba43..c278dea 100644 > --- a/hw/ide/internal.h > +++ b/hw/ide/internal.h > @@ -524,6 +524,9 @@ extern const VMStateDescription vmstate_ide_drive; > #define VMSTATE_IDE_DRIVES(_field, _state) \ > VMSTATE_STRUCT_ARRAY(_field, _state, 2, 3, vmstate_ide_drive, IDEState) > > +#define VMSTATE_IDE_DRIVE(_field, _state) \ > + VMSTATE_STRUCT(_field, _state, 1, vmstate_ide_drive, IDEState) > + > void ide_bus_reset(IDEBus *bus); > int64_t ide_get_sector(IDEState *s); > void ide_set_sector(IDEState *s, int64_t sector_num); >