[libvirt] [PATCH] qemu: Check QEMU error on failed migration
Jiri Denemark
jdenemar at redhat.com
Tue Oct 17 09:11:00 UTC 2017
On Mon, Oct 16, 2017 at 17:18:58 +0200, Pavel Hrdina wrote:
> On Thu, Oct 12, 2017 at 03:48:29PM +0200, Jiri Denemark wrote:
> > When migration fails, QEMU may provide a description of the error in
> > the reply to query-migrate QMP command. We can fetch this error and use
> > it instead of the generic "unexpectedly failed" message.
> >
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
...
> > - if (qemuMonitorJSONGetMigrationStats(qemuMonitorTestGetMonitor(test), &stats) < 0)
> > + if (qemuMonitorJSONGetMigrationStats(qemuMonitorTestGetMonitor(test),
> > + &stats, &error) < 0)
> > goto cleanup;
> >
> > - if (memcmp(&stats, &expectedStats, sizeof(stats)) != 0) {
> > + if (memcmp(&stats, &expectedStats, sizeof(stats)) != 0 || error) {
> > virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > - "Invalid migration status");
> > + "Invalid migration statistics");
> > + goto cleanup;
> > + }
>
> Do we need to pass the "&error" for the first call of
> qemuMonitorJSONGetMigrationStats() since we know the answer?
Well, this is true for all tests. This is just testing that error stays
unset if there's no error reported by QEMU.
>
> > +
> > + memset(&stats, 0, sizeof(stats));
> > + if (qemuMonitorJSONGetMigrationStats(qemuMonitorTestGetMonitor(test),
> > + &stats, &error) < 0)
> > + goto cleanup;
> > +
> > + if (stats.status != QEMU_MONITOR_MIGRATION_STATUS_ERROR ||
> > + STRNEQ_NULLABLE(error, "It's broken")) {
> > + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > + "Invalid failed migration status");
> > goto cleanup;
> > }
> >
> > ret = 0;
> > cleanup:
> > qemuMonitorTestFree(test);
> > + VIR_FREE(error);
> > return ret;
> > }
>
> Reviewed-by: Pavel Hrdina <phrdina at redhat.com>
Thanks, pushed.
Jirka
More information about the libvir-list
mailing list