On Thu, Sep 21, 2017 at 16:39:39 +0300, Nikolay Shirokovskiy wrote: > Imagine if we use 'virsh dumpxml --migratable' for offline domain > to get config to tweak before migration. Currenly cpu section will > be expanded, host-cpu mode turns into custom and migration fails > because of ABI check. > > Looks like ABI check does not make much sence for offline migration > but we don't want host-cpu mode to turn into custom in the first place. > Using --migratable is reasonable in this case because this flags > makes changes for inactive configs too like removing automatically > added parts that old versions can not handle. > > I suggest not to update cpu for inactive configs. This appoach is > coherent with the way migration works for inactive configs in case > it is not specified externally to migration: function qemuMigrationCookieXMLFormat > don't expand cpu too. > > Adding flag for active configs is useless because qemuDomainFormatXML > will clear it in this case. Not anymore, see commit v3.7.0-151-g06f75ff2cb. ... > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index d9dff93..3223554 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -6993,9 +6993,6 @@ static char > if (qemuDomainUpdateCurrentMemorySize(driver, vm) < 0) > goto cleanup; > > - if ((flags & VIR_DOMAIN_XML_MIGRATABLE)) > - flags |= VIR_DOMAIN_XML_UPDATE_CPU; > - > ret = qemuDomainFormatXML(driver, vm, flags); > > cleanup: This area of code changed recently and it looks like the following now: if ((flags & VIR_DOMAIN_XML_MIGRATABLE)) flags |= QEMU_DOMAIN_FORMAT_LIVE_FLAGS; /* The CPU is already updated in the domain's live definition, we need to * ignore the VIR_DOMAIN_XML_UPDATE_CPU flag. */ if (virDomainObjIsActive(vm) && !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) flags &= ~VIR_DOMAIN_XML_UPDATE_CPU; But even before the changes, the two lines you are removing were if ((flags & VIR_DOMAIN_XML_MIGRATABLE)) flags |= QEMU_DOMAIN_FORMAT_LIVE_FLAGS; since commit v0.10.2-133-g28f8dfdccc, i.e., for the last 5 years. I guess you have some local changes applied to the libvirt tree. Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list