On 05/22/14 13:55, Jiri Denemark wrote: > This is similar to the previous commit in that we need to explicitly > send migrate_cancel when libvirt detects an error other than those > reported by query-migrate. However, the possibility to hit such error is > pretty small. > > Signed-off-by: Jiri Denemark <[email protected]> > --- > src/qemu/qemu_migration.c | 21 ++++++++++++++++++++- > 1 file changed, 20 insertions(+), 1 deletion(-) > > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c > index ae18acb..5754f73 100644 > --- a/src/qemu/qemu_migration.c > +++ b/src/qemu/qemu_migration.c > @@ -4704,6 +4704,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, > virDomainObjPtr vm, > int pipeFD[2] = { -1, -1 }; > unsigned long saveMigBandwidth = priv->migMaxBandwidth; > char *errbuf = NULL; > + virErrorPtr orig_err = NULL; > > /* Increase migration bandwidth to unlimited since target is a file. > * Failure to change migration speed is not fatal. */ > @@ -4806,8 +4807,17 @@ qemuMigrationToFile(virQEMUDriverPtr driver, > virDomainObjPtr vm, > > rc = qemuMigrationWaitForCompletion(driver, vm, asyncJob, NULL, false); > > - if (rc < 0) > + if (rc < 0) { > + if (rc == -2) { > + orig_err = virSaveLastError(); > + virCommandAbort(cmd);
Shouldn't we abort the migration in qemu before killing the I/O helper?
Qemu will get a sigpipe probably after we do that. Not sure wether
that's worth dealing with as the migration is still going to fail.
> + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
> + qemuMonitorMigrateCancel(priv->mon);
> + qemuDomainObjExitMonitor(driver, vm);
> + }
> + }
> goto cleanup;
> + }
>
> if (cmd && virCommandWait(cmd, NULL) < 0)
> goto cleanup;
ACK, preferably you respond to my question before pushing :)
Peter
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
