qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v10 29/30] cpu: Convert CpuInfo into flat union


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v10 29/30] cpu: Convert CpuInfo into flat union
Date: Wed, 11 Nov 2015 18:00:56 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 11/11/2015 03:19 AM, Markus Armbruster wrote:
>
>>>> Do we need this to make 2.5?
>>>
>>> It's true that the introspection will change (instead of seeing flat
>>> optional members, you now have to chase down variants).  But I don't
>>> think it is pressing enough to rush into 2.5; the change is
>>> backwards-compatible no matter when we do it, and introspection clients
>>> are going to have to get used to the idea of chasing down different
>>> paths to find all members of a struct (that is, if we don't change this
>>> until 2.6, I'm sure it won't be the last case of introspection changing
>>> while keeping QMP wire format back-compatible as formerly non-variant
>>> fields become variant).
>> 
>> We can mess with the schema as long as the QMP wire format stays
>> compatible.
>> 
>> With introspection, schema changes get exposed in QMP that weren't
>> exposed before.  Begs the question whether the ABI promise extends to
>> the introspection value.
>> 
>> I think we don't want to extend it, at least for now.  In other words,
>> we refuse to put additional constraints on schema changes to keep the
>> introspection value stable.  Makes introspection a bit harder to use.
>> Not ideal, but better than committing to constraints we don't even fully
>> understand, yet.
>> 
>> I think we should spell this out introspection documentation.
>
> Sounds like I need to prep a doc patch for 2.5 then.

Yes, please!

>> Our only example so far is converting between optional members and flat
>> unions.  Can we think of others?  Hmm, you found one below.
>
> Converting from optional non-variant to variant, converting from string
> to enum, converting from single type to alternate.  Might be other
> conversions, and the set of conversions for input types may differ from
> those of output conversions.
>
>> Okay.  I guess finding all the examples that matter may take a few
>> development cycles.  Perhaps we want to commit to some additional
>> compatibility promises for introspection then.
>
> Maybe, but until clients are no longer worried about older clients, it
> may be several years before taking advantage of whatever we later
> document

That's life.

I fully expect the consumers of QMP introspection to get a few things
wrong initially, requiring their users to upgrade to fixed versions.
That's life, too.

>          (as it is, upstream libvirt is just now bumping minimum qemu
> support up to 0.12 [thanks to RHEL 6] and discarding older qemu from
> RHEL 5 - quite a few years behind upstream qemu 2.5, although it is
> finding a lot of code in libvirt that is no longer necessary).

In my opinion, attempting to support old versions of QEMU is a complete
waste of resources unless you actually test them to stop the bit-rot.

RHEL-6 0.12 is by now quite different from upstream 0.12.  Unlike
upstream 0.12, it's actually still relevant and useful today.

I encourage you to identify relevant upstream and downstream versions,
keep them tested, and drop support for the rest.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]