On Fri, Sep 23, 2016 at 15:24:58 +0200, Michal Privoznik wrote: > We can't rely on def->emulator path. It may be provided by user > as we give them opportunity to provide their own XML for > migration. Therefore the path may point to just whatever binary > (or even to a non-existent file). Moreover, this path is meant > for destination, but the capabilities lookup is done on source. > What we can do is to assume same capabilities for post parse > callbacks as the running domain has. They will be used just to > add some default models/controllers/devices/... anyway. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/qemu/qemu_domain.c | 16 ++++++++++------ > src/qemu/qemu_migration.c | 2 +- > 2 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > index 97f8993..ea88f5e 100644 > --- a/src/qemu/qemu_domain.c > +++ b/src/qemu/qemu_domain.c > @@ -2327,11 +2327,11 @@ qemuDomainDefPostParse(virDomainDefPtr def, > virCapsPtr caps, > unsigned int parseFlags, > void *opaque, > - void *parseOpaque ATTRIBUTE_UNUSED) > + void *parseOpaque) > { > virQEMUDriverPtr driver = opaque; > virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); > - virQEMUCapsPtr qemuCaps = NULL; > + virQEMUCapsPtr qemuCaps = parseOpaque; > int ret = -1; > > if (def->os.bootloader || def->os.bootloaderArgs) { > @@ -2360,10 +2360,14 @@ qemuDomainDefPostParse(virDomainDefPtr def, > !(def->emulator = virDomainDefGetDefaultEmulator(def, caps))) > goto cleanup; > > - if (!(qemuCaps = virQEMUCapsCacheLookup(caps, > - driver->qemuCapsCache, > - def->emulator))) > - goto cleanup; > + if (qemuCaps) { > + virObjectRef(qemuCaps); > + } else { > + if (!(qemuCaps = virQEMUCapsCacheLookup(caps, > + driver->qemuCapsCache, > + def->emulator))) > + goto cleanup; > + } This could be simplified a bit as if (!virObjectRef(qemuCaps) && !(qemuCaps = virQEMUCapsCacheLookup(caps, driver->qemuCapsCache, def->emulator))) goto cleanup; But not a big deal. ACK Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list