[libvirt] [PATCH 4/4] qemu: Use correct flags for ABI stability check in SaveImageUpdateDef
Martin Kletzander
mkletzan at redhat.com
Tue Feb 24 13:16:04 UTC 2015
On Thu, Feb 19, 2015 at 02:13:45PM +0100, Michal Privoznik wrote:
>https://bugzilla.redhat.com/show_bug.cgi?id=1183869
>
>Soo. you've successfully started yourself a domain. And since you want
s/you/You/ at least ;)
>to use it on your host exclusively you are confident enough to
>passthrough the host CPU model, like this:
>
> <cpu mode='host-passthrough'/>
>
>Then, after a while, you want to save the domain into a file (e.g.
>virsh save dom dom.save). And here comes the trouble. The file consist
>of two parts: Libvirt header (containing domain XML among other
>things), and qemu migration data. Now, the domain XML in the header is
>formatted using special flags (VIR_DOMAIN_XML_SECURE |
>VIR_DOMAIN_XML_UPDATE_CPU | VIR_DOMAIN_XML_INACTIVE |
>VIR_DOMAIN_XML_MIGRATABLE).
>
>Then, on your way back from the bar, you think of changing something
>in the XML in the saved file (we have a command for it after all), say
>listen address for graphics console. So you successfully type in the
>command:
>
> virsh save-image-edit dom.save
>
>Change all the bits, and exit the editor. But instead of success
>you're left with sad error message:
>
> error: unsupported configuration: Target CPU model <null> does not
> match source Pentium Pro
>
>Sigh. Digging into the code you see lines, where we check for ABI
>stability. The new XML you've produced is compared with the old one
>from the saved file to see if qemu ABI will break or not. Wait, what?
>We are using different flags to parse the XML you've provided so we
>were just lucky it worked in some cases? Yep, that's right.
>
Great story, is that yours? What bar was that? ;-)
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> src/qemu/qemu_driver.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index 8f0cf2b..19dfce4 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -5734,8 +5734,8 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver,
>
> if (!(newdef_migr = qemuDomainDefCopy(driver,
> newdef,
>- VIR_DOMAIN_XML_MIGRATABLE |
>- VIR_DOMAIN_XML_SECURE)))
>+ QEMU_DOMAIN_FORMAT_LIVE_FLAGS ||
>+ VIR_DOMAIN_XML_MIGRATABLE)))
Shouldn't there be also VIR_DOMAIN_XML_INACTIVE? Although any live
data can't get there, can it?
ACK
> goto cleanup;
>
> if (!virDomainDefCheckABIStability(def, newdef_migr)) {
>--
>2.0.5
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150224/dd396a08/attachment-0001.sig>
More information about the libvir-list
mailing list