On 05/25/2010 02:23 AM, Avi Kivity wrote:
On 05/24/2010 11:22 PM, Anthony Liguori wrote:
This converts the entire qdev tree into an undocumented stable
protocol (the qdev paths were already in this state I believe).
This really worries me.
N.B. the association with qdev is only in identifying the device.
The contents of the device's state are not part of qdev but rather
part of vmstate. vmstate is something that we already guarantee to
be stable since that's required for live migration compatibility.
That removes out ability to deprecate older vmstate as time passes.
Not a blocker but something to consider.
I don't think that qdev device names and paths are something we have
to worry much about changing over time since they reflect logical bus
layout. They should remain static provided the devices remain static.
Modulo mistakes. We already saw one (lack of pci domains). To reduce
the possibility of mistakes, we need reviewable documentation.
pci domains was only a mistake as a nice-to-have. We can add pci
domains in a backwards compatible way.
The arguments you're making about the importance of backwards
compatibility and what's needed to strongly guarantee it are equally
applicable to the live migration protocol. We really do need to
formally document the live migration protocol in such a way that it's
reviewable if we hope to truly make it compatible across versions.
Regards,
Anthony Liguori
Note sysfs had similar assumptions and problems.
The qdev properties are a different matter entirely. A command like
'info qdm' would be potentially difficult to support as part of QMP
but the proposed command's output is actually already part of a
backward compatible interface (vmstate).
That's all good. But documentation is critical for this. Not only to
improve quality, but also so that tool authors would have something to
code against instead of trial and error (which invariably misses some
corner cases).