[libvirt] [PATCH] kill vm if saving config failed in v3 protocol
Wen Congyang
wencongyang at gmail.com
Mon Jul 11 13:10:49 UTC 2011
At 2011年07月11日 17:25, Daniel P. Berrange write:
> 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
Thanks, pushed.
>
> Daniel
More information about the libvir-list
mailing list