Paolo Bonzini <pbonz...@redhat.com> writes: > Il 15/10/2013 16:35, Michael S. Tsirkin ha scritto: >> On Tue, Oct 15, 2013 at 04:31:31PM +0200, Paolo Bonzini wrote: >>> Il 14/10/2013 17:01, Michael S. Tsirkin ha scritto: >>>> - VMSTATE_STRUCT(pci0_status, PIIX4PMState, 2, vmstate_pci_status, >>>> - struct pci_status), >>>> + VMSTATE_STRUCT_TEST(pci0_status, PIIX4PMState, >>>> + vmstate_test_no_use_acpi_pci_hotplug, >>>> + 2, vmstate_pci_status, >>>> + struct pci_status), >>> >>> There's no reason to remove this from the stream when a new machine type >>> is in use. You'll just send out zeroes. >> >> Seemed cleaner not to. > > It certainly would be if we had a self-descriptive migration stream > format.
Yes, removing tests is always a good thing. But I think subsections should always be used when they can. We should not break compatibility (even if we technical don't guarantee it) unless we absolutely have to. Regards, Anthony Liguori > > However, what we have is "send bytes, parse them on the destination, > hope the format matches". Hence, anything that makes the format less > declarative adds to the complication and complicates debugging. This is > the same reason why I prefer a subsection for the new hotplug stuff---it > makes the format more declarative and self-descriptive. > > Paolo > >>>> + VMSTATE_PCI_HOTPLUG(acpi_pci_hotplug, PIIX4PMState, >>>> + vmstate_test_use_acpi_pci_hotplug), >>> >>> This works, but it is a bit different from other cases that are already >>> present, which use a subsection. It is a bit ugly because it looks like >>> a version-1 field, but in fact it is not version 1. >>> >>> I'll let other people decide whether it's acceptable or not, but I'm >>> leaning towards asking you to use a subsection. >>> >>> Paolo