On Wed, Feb 25, 2009 at 02:30:35PM +0100, Chris Lalancette wrote: > All, > There was a logic error in the Qemu driver when doing a non-live migrate. > During a non-live migrate, on the source host during the Perform step, we > pause the domain; however, if there was ever a failure, we were forgetting > to unpause the domain, meaning that the domain was paused forever. Add a > flag to tell us when we should unpause the domain after a failure. Princile sounds fine ... but > Signed-off-by: Chris Lalancette <clalance@xxxxxxxxxx> > diff --git a/src/qemu_driver.c b/src/qemu_driver.c > index a8a2ae7..bcc4690 100644 > --- a/src/qemu_driver.c > +++ b/src/qemu_driver.c > @@ -4331,6 +4331,7 @@ qemudDomainMigratePerform (virDomainPtr dom, > char cmd[HOST_NAME_MAX+50]; > char *info = NULL; > int ret = -1; > + int paused = 0; > > qemuDriverLock(driver); > vm = virDomainFindByID(&driver->domains, dom->id); > @@ -4352,6 +4353,7 @@ qemudDomainMigratePerform (virDomainPtr dom, > qemudMonitorCommand (vm, cmd, &info); > DEBUG ("stop reply: %s", info); > VIR_FREE(info); > + paused = 1; > > event = virDomainEventNewFromObj(vm, > VIR_DOMAIN_EVENT_SUSPENDED, > @@ -4407,6 +4409,21 @@ qemudDomainMigratePerform (virDomainPtr dom, > ret = 0; > > cleanup: > + if (ret != 0 && paused) { > + /* we got here through some sort of failure; start the domain again */ > + snprintf(cmd, sizeof cmd, "%s", "cont"); sizeof without braces ? > + qemudMonitorCommand (vm, cmd, &info); and why not just doing qemudMonitorCommand (vm, "cont", &info); and avoiding this ? and do we care about error handling there ? > + DEBUG ("cont reply: %s", info); > + VIR_FREE(info); no need to do VIR_FREE(info) there since it's done below > + event = virDomainEventNewFromObj(vm, > + VIR_DOMAIN_EVENT_RESUMED, > + VIR_DOMAIN_EVENT_RESUMED_MIGRATED); > + if (event) > + qemuDomainEventQueue(driver, event); > + event = NULL; > + } > + > VIR_FREE(info); Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list