On Mon, Jan 29, 2018 at 11:32:01 -0500, John Ferlan wrote:
> Add the query-dump API's in order to allow the dump-guest-memory
> to be used to monitor progress. This will use the dump stats
> extraction helper to fill a return buffer.
>
> Signed-off-by: John Ferlan <jferlan@redhat.com>
> ---
> src/qemu/qemu_monitor.c | 9 +++++++++
> src/qemu/qemu_monitor.h | 2 ++
> src/qemu/qemu_monitor_json.c | 37 +++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_monitor_json.h | 3 +++
> 4 files changed, 51 insertions(+)
>
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index 23153967c..a8ca9a566 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -2773,6 +2773,15 @@ qemuMonitorMigrateCancel(qemuMonitorPtr mon)
> }
>
>
> +qemuMonitorDumpStatsPtr
> +qemuMonitorQueryDump(qemuMonitorPtr mon)
> +{
> + QEMU_CHECK_MONITOR_JSON_NULL(mon);
> +
> + return qemuMonitorJSONQueryDump(mon);
> +}
> +
> +
> /**
> * Returns 1 if @capability is supported, 0 if it's not, or -1 on error.
> */
> diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
> index 37f335e9f..5749af168 100644
> --- a/src/qemu/qemu_monitor.h
> +++ b/src/qemu/qemu_monitor.h
> @@ -787,6 +787,8 @@ int qemuMonitorMigrateCancel(qemuMonitorPtr mon);
> int qemuMonitorGetDumpGuestMemoryCapability(qemuMonitorPtr mon,
> const char *capability);
>
> +qemuMonitorDumpStatsPtr qemuMonitorQueryDump(qemuMonitorPtr mon);
> +
> int qemuMonitorDumpToFd(qemuMonitorPtr mon,
> int fd,
> const char *dumpformat);
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index a8cb8ce6b..33ec3347e 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -3170,6 +3170,43 @@ int qemuMonitorJSONMigrateCancel(qemuMonitorPtr mon)
> return ret;
> }
>
> +
> +/* qemuMonitorJSONQueryDump:
> + * @mon: Monitor pointer
> + *
> + * Attempt to make a "query-dump" call, check for errors, and get/return
> + * the current from the reply
> + *
> + * Returns: @stats on success, NULL on failure
> + */
> +qemuMonitorDumpStatsPtr
> +qemuMonitorJSONQueryDump(qemuMonitorPtr mon)
> +{
> + virJSONValuePtr cmd = qemuMonitorJSONMakeCommand("query-dump", NULL);
> + virJSONValuePtr reply = NULL;
> + virJSONValuePtr result = NULL;
> + qemuMonitorDumpStatsPtr ret = NULL;
This API could just work on existing qemuMonitorDumpStats structure
instead of requiring the caller to copy the results.
> +
> + if (!cmd)
> + return NULL;
> +
> + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
> + goto cleanup;
> +
> + if (qemuMonitorJSONCheckError(cmd, reply) < 0)
> + goto cleanup;
> +
> + result = virJSONValueObjectGetObject(reply, "return");
> +
> + ret = qemuMonitorJSONExtractDumpStats(result);
> +
> + cleanup:
> + virJSONValueFree(cmd);
> + virJSONValueFree(reply);
> + return ret;
> +}
> +
> +
> int
> qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitorPtr mon,
> const char *capability)
> diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
> index 739a99293..f9fcba77f 100644
> --- a/src/qemu/qemu_monitor_json.h
> +++ b/src/qemu/qemu_monitor_json.h
> @@ -162,6 +162,9 @@ int qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitorPtr mon,
>
> int qemuMonitorJSONMigrateCancel(qemuMonitorPtr mon);
>
> +qemuMonitorDumpStatsPtr
> +qemuMonitorJSONQueryDump(qemuMonitorPtr mon);
> +
> int qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitorPtr mon,
> const char *capability);
Jirka
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list