OSDN Git Service

monitor: Drop query-qmp-schema 'gen': false hack
authorMarkus Armbruster <armbru@redhat.com>
Thu, 18 Mar 2021 15:55:14 +0000 (16:55 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Fri, 19 Mar 2021 15:05:09 +0000 (16:05 +0100)
commit624fa80c8c199229af7ff42eb20b5b2ab851e4ee
tree77b132f8d37ed948dd864fd6bb5f698f5163628a
parenta291a38fa1db6a67bd9046da26a48e82c591ca49
monitor: Drop query-qmp-schema 'gen': false hack

QMP commands return their response as a generated QAPI type, which the
monitor core converts to JSON via QObject.

query-qmp-schema's response is the generated introspection data.  This
is a QLitObject since commit 7d0f982bfb "qapi: generate a literal
qobject for introspection", v2.12).  Before, it was a string.  Instead
of converting QLitObject / string -> QObject -> QAPI type
SchemaInfoList -> QObject -> JSON, we take a shortcut: the command is
'gen': false, so it can return the QObject instead of the QAPI type.
Slightly simpler and more efficient.

The next commit will filter the response for output policy, and this
is easier in the SchemaInfoList representation.  Drop the shortcut.

This replaces the manual command registration by a generated one.  The
manual registration makes the command available before the machine is
built by passing flag QCO_ALLOW_PRECONFIG.  To keep it available
there, we need need to add 'allow-preconfig': true to its definition
in the schema.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210318155519.1224118-7-armbru@redhat.com>
monitor/misc.c
monitor/monitor-internal.h
monitor/qmp-cmds-control.c
qapi/introspect.json
storage-daemon/qemu-storage-daemon.c