Chris Lalancette wrote: > On 04/28/2010 11:43 AM, Jim Meyering wrote: >> Chris Lalancette wrote: >>> On 04/27/2010 04:40 PM, Jim Meyering wrote: >>>> Daniel P. Berrange wrote: >>>> >>>>> On Tue, Apr 27, 2010 at 06:45:16PM +0200, Jim Meyering wrote: >>>>>> I ran clang on the very latest and it spotted this problem: >>>>>> >From qemu_driver.c, around line 11100, >>>>>> >>>>>> else { >>>>>> /* qemu is a little funny with running guests and the restoration >>>>>> * of snapshots. If the snapshot was taken online, >>>>>> * then after a "loadvm" monitor command, the VM is set running >>>>>> * again. If the snapshot was taken offline, then after a "loadvm" >>>>>> * monitor command the VM is left paused. Unpausing it leads to >>>>>> * the memory state *before* the loadvm with the disk *after* the >>>>>> * loadvm, which obviously is bound to corrupt something. >>>>>> * Therefore we destroy the domain and set it to "off" in this case. >>>>>> */ >>>>>> >>>>>> if (virDomainObjIsActive(vm)) { >>>>>> qemudShutdownVMDaemon(driver, vm); >>>>>> event = virDomainEventNewFromObj(vm, >>>>>> VIR_DOMAIN_EVENT_STOPPED, >>>>>> VIR_DOMAIN_EVENT_STOPPED_FROM_SNAPSHOT); >>>>>> if (!vm->persistent) { >>>>>> if (qemuDomainObjEndJob(vm) > 0) >>>>>> virDomainRemoveInactive(&driver->domains, vm); >>>>>> vm = NULL; >>>>> >>>>> This needs to add 'goto endjob' or possibly 'goto cleanup' >>>> >>>> No point in endjob, since it does nothing when vm == NULL. >>>> >>>> Here's a tentative patch for that and another, similar problem >>>> (haven't even compiled it or run it through clang, but have to run). >>>> Will follow up tomorrow. >>> >>> Yeah, this looks reasonable and is what I was going to submit. It >>> would be good to give a test first, though. >> >> Can any of you easily test it? >> I can't right now. > > Yep, this works fine with transient domains and snapshotting. Thanks for testing that, Chris. I'll rebase and push in 8 or 10 hours. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list