On Fri, 11/27 10:48, Peter Xu wrote: > This patch is only adding the QMP/HMP interface for "dump-query" > command, but not implementing them. This command could be used to > query background dump status. Please refer to the next patch to see > how dump status are defined. > > Currently, only fake results are returned. > > Signed-off-by: Peter Xu <pet...@redhat.com> > --- > dump.c | 9 +++++++++ > hmp-commands.hx | 15 +++++++++++++++ > hmp.c | 6 ++++++ > hmp.h | 1 + > qapi-schema.json | 21 +++++++++++++++++++++ > qmp-commands.hx | 29 ++++++++++++++++++++++++++++- > 6 files changed, 80 insertions(+), 1 deletion(-) > > diff --git a/dump.c b/dump.c > index 0d321d4..446a991 100644 > --- a/dump.c > +++ b/dump.c > @@ -1777,6 +1777,15 @@ void qmp_dump_guest_memory(bool paging, const char > *file, > } > } > > +DumpStatus *qmp_dump_query(Error **errp) > +{ > + DumpStatus *status = g_malloc0(sizeof(*status)); > + /* TBD */ > + status->status = g_strdup("WORKING"); > + status->percentage = g_strdup("50%"); > + return status; > +} > + > DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error > **errp) > { > DumpGuestMemoryFormatList *item; > diff --git a/hmp-commands.hx b/hmp-commands.hx > index 664d794..4ce7721 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -1087,6 +1087,21 @@ gdb. Without -z|-l|-s, the dump format is ELF. > together with begin. > ETEXI > > + { > + .name = "dump-query", > + .args_type = "", > + .params = "", > + .help = "query last guest memory dump status.\n\t\t\t",
What are "\n\t\t\t" doing here? > + .mhandler.cmd = hmp_dump_query, > + }, > + > + > +STEXI > +@item dump-query > +@findex dump-query > +Query latest dump status. > +ETEXI > + > #if defined(TARGET_S390X) > { > .name = "dump-skeys", > diff --git a/hmp.c b/hmp.c > index dccb457..6d9c127 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -1576,6 +1576,12 @@ void hmp_device_del(Monitor *mon, const QDict *qdict) > hmp_handle_error(mon, &err); > } > > +void hmp_dump_query(Monitor *mon, const QDict *qdict) > +{ > + /* TBD */ > + monitor_printf(mon, "QUERY DUMP STATUS\n"); > +} > + > void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict) > { > Error *err = NULL; > diff --git a/hmp.h b/hmp.h > index a8c5b5a..fdde4a3 100644 > --- a/hmp.h > +++ b/hmp.h > @@ -85,6 +85,7 @@ void hmp_migrate(Monitor *mon, const QDict *qdict); > void hmp_device_add(Monitor *mon, const QDict *qdict); > void hmp_device_del(Monitor *mon, const QDict *qdict); > void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict); > +void hmp_dump_query(Monitor *mon, const QDict *qdict); > void hmp_netdev_add(Monitor *mon, const QDict *qdict); > void hmp_netdev_del(Monitor *mon, const QDict *qdict); > void hmp_getfd(Monitor *mon, const QDict *qdict); > diff --git a/qapi-schema.json b/qapi-schema.json > index fd81ce2..5db615d 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -2139,6 +2139,27 @@ > '*format': 'DumpGuestMemoryFormat'} } > > ## > +# @DumpStatus > +# > +# Status for the last guest memory dump. > +# > +# Since: 2.6 > +## > +{ 'struct': 'DumpStatus', > + 'data': { 'status': 'str', 'percentage': 'str' } } I suggest using enum for "status" and int for "percentage" (or two ints for "total" and "current"). > + > +## > +# @dump-query > +# > +# Query latest dump status. > +# > +# Returns: A @DumpStatus object showing the dump status. > +# > +# Since: 2.6 > +## > +{ 'command': 'dump-query', 'returns': 'DumpStatus' } > + > +## > # @DumpGuestMemoryCapability: > # > # A list of the available formats for dump-guest-memory > diff --git a/qmp-commands.hx b/qmp-commands.hx > index bbb08e1..6d13778 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -879,9 +879,36 @@ Notes: > EQMP > > { > + .name = "dump-query", > + .args_type = "", > + .params = "", > + .help = "query background dump status", > + .mhandler.cmd_new = qmp_marshal_dump_query, > + }, > + > +SQMP > +dump-query > +---------- > + > +Query background dump status. > + > +Arguments: None. > + > +Example: > + > +-> { "execute": "dump-query" } > +<- { "return": {"status": "IN_PROGRESS", "percentage": "85%" } } > + > +Notes: > + > +(1) All boolean arguments default to false Which "boolean arguments"? > + > +EQMP > + > + { > .name = "query-dump-guest-memory-capability", > .args_type = "", > - .mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability, > + .mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability, > }, > > SQMP > -- > 2.4.3 > >