two comments below On 01/17/14 08:46, qiaonuohan wrote: > 'query-dump-guest-memory-capability' is used to query whether option 'format' > is available for 'dump-guest-memory' and the available format. The output > of the command will be like: > > -> { "execute": "query-dump-guest-memory-capability" } > <- { "return": { > "format-option": "optional", > "capabilities": [ > {"available": true, "format": "elf"}, > {"available": true, "format": "kdump-zlib"}, > {"available": true, "format": "kdump-lzo"}, > {"available": true, "format": "kdump-snappy"} > ] > } > > Signed-off-by: Qiao Nuohan <qiaonuo...@cn.fujitsu.com> > --- > dump.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > qapi-schema.json | 13 +++++++++++++ > qmp-commands.hx | 31 +++++++++++++++++++++++++++++++ > 3 files changed, 86 insertions(+), 0 deletions(-) > > diff --git a/dump.c b/dump.c > index dbf4bb6..c288cd3 100644 > --- a/dump.c > +++ b/dump.c > @@ -1794,3 +1794,45 @@ void qmp_dump_guest_memory(bool paging, const char > *file, bool has_begin, > > g_free(s); > } > + > +DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error > **errp) > +{ > + int i; > + DumpGuestMemoryCapabilityStatusList *item; > + DumpGuestMemoryCapability *cap = > + > g_malloc0(sizeof(DumpGuestMemoryCapability)); > + > + cap->format_option = g_strdup_printf("optional"); > + > + for (i = 0; i < DUMP_GUEST_MEMORY_FORMAT_MAX; i++) { > + if (cap->capabilities == NULL) { > + item = g_malloc0(sizeof(DumpGuestMemoryCapabilityStatusList)); > + cap->capabilities = item; > + } else { > + item->next = > g_malloc0(sizeof(DumpGuestMemoryCapabilityStatusList)); > + item = item->next; > + } > + > + item->value = g_malloc0(sizeof(struct > DumpGuestMemoryCapabilityStatus)); > + item->value->format = i; > + > + if (i == DUMP_GUEST_MEMORY_FORMAT_ELF || i == > + DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB) {
Line wrapping hiccup. > + item->value->available = true; > + } > + > +#ifdef CONFIG_LZO > + if (i == DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO) { > + item->value->available = true; > + } > +#endif > + > +#ifdef CONFIG_SNAPPY > + if (i == DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY) { > + item->value->available = true; > + } > +#endif > + } > + > + return cap; > +} > diff --git a/qapi-schema.json b/qapi-schema.json > index 52df894..3085294 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -2744,6 +2744,19 @@ > '*length': 'int', '*format': 'DumpGuestMemoryFormat' } } > > ## > +# Since: 2.0 > +## > +{ 'type': 'DumpGuestMemoryCapabilityStatus', > + 'data': { 'format': 'DumpGuestMemoryFormat', 'available': 'bool' } } > + > +{ 'type': 'DumpGuestMemoryCapability', > + 'data': { > + 'format-option': 'str', > + 'capabilities': ['DumpGuestMemoryCapabilityStatus'] } } > + > +{ 'command': 'query-dump-guest-memory-capability', 'returns': > 'DumpGuestMemoryCapability' } > + > +## > # @netdev_add: > # > # Add a network backend. > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 9158f22..ad51de0 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -829,6 +829,37 @@ Notes: > EQMP > > { > + .name = "query-dump-guest-memory-capability", > + .args_type = "", > + .mhandler.cmd_new = > qmp_marshal_input_query_dump_guest_memory_capability, > + }, > + > +SQMP > +query-dump-guest-memory-capability > +---------- > + > +Show whether option 'format' is available for 'dump-guest-memory' and the > +available format. > + > +Example: > + > +-> { "execute": "query-dump-guest-memory-capability" } > +<- { "return": { > + "format-option": "optional", > + "capabilities": [ > + {"available": true, "format": "elf"}, > + {"available": true, "format": "kdump-zlib"}, > + {"available": true, "format": "kdump-lzo"}, > + {"available": true, "format": "kdump-snappy"} > + ] > + } > + > +Note: This is a light-weight introspection to let management know whether > format > + option is available and the supported compression format. > + > +EQMP > + > + { > .name = "netdev_add", > .args_type = "netdev:O", > .mhandler.cmd_new = qmp_netdev_add, > Although in general I don't like to obsess about English grammar, this should say available / supported "formats", plural (two instances in the above text). I'm only proposing these because you'll respin anyway, but I don't insist. If you change nothing else in this patch, then you can add my Reviewed-by: Laszlo Ersek <ler...@redhat.com> Thanks! Laszlo