On Mon, Jul 11, 2011 at 09:25:40AM +0800, Wen Congyang wrote: > At 07/01/2011 06:05 PM, Wen Congyang Write: > > If virDomainSaveConfig() failed, we will return NULL to source, > > and the vm is still available to restart during confirm() step in > > v3 protocol. So we should kill it off in qemuMigrationFinish(). > > > > In v2 protocol, we should not set vm to NULL, because we hold > > a reference of vm and should unrefernce it. > > > > --- > > src/qemu/qemu_migration.c | 21 +++++++++++++++++++-- > > 1 files changed, 19 insertions(+), 2 deletions(-) > > > > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c > > index 800b714..fa98cba 100644 > > --- a/src/qemu/qemu_migration.c > > +++ b/src/qemu/qemu_migration.c > > @@ -2471,7 +2471,7 @@ qemuMigrationFinish(struct qemud_driver *driver, > > if (!virDomainObjIsActive(vm)) { > > qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", > > _("guest unexpectedly quit")); > > - goto cleanup; > > + goto endjob; > > } > > > > qemuMigrationVPAssociatePortProfiles(vm->def); > > @@ -2491,7 +2491,24 @@ qemuMigrationFinish(struct qemud_driver *driver, > > * Return a NULL dom pointer, and hope that this is a rare > > * situation and management tools are smart. > > */ > > - vm = NULL; > > + > > + /* > > + * In v3 protocol, the source VM is still available to > > + * restart during confirm() step, so we kill it off > > + * now. > > + * In v2 protocol, the source is dead, so we leave > > + * target in paused state, in case admin can fix > > + * things up > > + */ > > + if (v3proto) { > > + qemuProcessStop(driver, vm, 1, VIR_DOMAIN_SHUTOFF_FAILED); > > + qemuAuditDomainStop(vm, "failed"); > > + if (newVM) { > > + if (qemuDomainObjEndJob(vm) > 0) > > + virDomainRemoveInactive(&driver->domains, vm); > > + vm = NULL; > > + } > > + } > > goto endjob; > > } > > ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list