On Wed, Apr 23, 2014 at 06:16:23PM +0100, Dr. David Alan Gilbert wrote: > * Eric Blake (ebl...@redhat.com) wrote: > > On 04/23/2014 10:37 AM, Dr. David Alan Gilbert (git) wrote: > > > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > > > > > > > 4) At the moment you select BER output format by setting an environment > > > variable ( export QEMUMIGFORMAT=BER ) , I need to put more thought > > > in to the right way to do this, there are some harder questions like > > > what happens to devices that are still using pre-vmstate encodings > > > (that are currently sent as blobs) when they eventually convert over > > > and thus how to keep compatibility with earlier BER output versions > > > where they were blobs. > > > > I don't have good advice on how to address intra-version design (what > > happens when an old version of BER sends a blob but a new version on the > > receiving side expects formatted data instead of a blob), other than > > it's going to be similar to any other intra-version design that we > > already have to consider when upgrading from old to new qemu. > > > > But for how to select BER format, I _do_ have an idea: > > > > https://lists.gnu.org/archive/html/qemu-devel/2014-04/msg00782.html > > > > Basically, I think that the choice of migration format should be > > selected via a new extended capability added to > > migrate-set-capabilities. Setting the choice at the environment > > variable is too inflexible (it's locked down for the duration of the > > entire qemu process), whereas setting it via QMP is desirable (for > > example, it would let us choose at the time of migration whether we are > > migrating to an older host and want the old format, or migrating to a > > file for checkpointing reasons and want the new format). > > Yep, that would certainly be easy to do - and I can do that for > the next version. > It's more the intra-version I'm worried about, primarily because I don't > want to have to wait until every device is vmstate'd before moving this > code forward. > > The one thing that the environment variable does make nice and easy, > for dev, is using it with existing test setups - e.g. running virt-test > in BER mode or existing mode. > > Dave >
How about tying this to a machine version for now? This will let us switch devices to BER gradually over several version, as long as we support parsing/generating old format with old -M machine type. The issue with versioning format via QMP is that really migration format is only part of the compatibility problem. A bigger problem is emulating a bug for bug compatible version of the device. And that can't easily change without at least doing a VM reset. > -- > Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK