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

Reply via email to