From: Eric Blake <eblake@redhat.com>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, armbru@redhat.com
Subject: [Qemu-devel] [PATCH v2 00/14] Add qapi-to-JSON output visitor
Date: Mon, 21 Dec 2015 17:30:54 -0700 [thread overview]
Message-ID: <1450744268-25052-1-git-send-email-eblake@redhat.com> (raw)
Prerequisites:
+ my qapi cleanups subset E v8:
https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg03863.html
I wrote this series for several reasons:
1. I've been doing a lot of churn in the qapi visitor interfaces
lately; adding a new visitor is good proof whether the changes
still make sense
2. Alexander ended up writing his own simple JSON generator as
qjson.c in his work for vmstate self-description, rather than
reusing existing code, because the QObject JSON generator does
not have an easy entry point
3. Fam commented while trying to enhance 'qemu-img map' that we
are rather wasteful in that there is no way to go directly from
a qapi type to JSON without an intermediate QObject creation
v2 notes:
Fix bugs so that 'make check' and qemu-iotests pass at all points.
Rebase on top of qapi cleanups subset E v8.
Promote out of RFC. However, in this version, I'm still
presenting two alternative solutions: either patch 8 (keep the
qjson.h interface) or patches 10-11 (completely drop qjson.h,
by inlining its contents but adding more glue in vmstate.c).
Patch 9 is a revert to show that the two alternatives are
orthogonal; the final series won't need a revert. I'd welcome
opinions on which alternative to stick with.
Backport diffstat (renames of 1 and 14 confuse the stats):
001/14:[down] 'qapi: Rename (one) qjson.h to qobject-json.h'
002/14:[----] [--] 'qapi: Improve use of qmp/types.h'
003/14:[----] [--] 'qapi: Factor out JSON string escaping'
004/14:[0002] [FC] 'qapi: Factor out JSON number formatting'
005/14:[----] [--] 'qapi: Use qstring_append_chr() where appropriate'
006/14:[0016] [FC] 'qapi: Add qstring_append_format()'
007/14:[0063] [FC] 'qapi: add json output visitor'
008/14:[0008] [FC] 'qjson: Simplify by using json-output-visitor'
009/14:[down] 'Revert "qjson: Simplify by using json-output-visitor"'
010/14:[down] 'vmstate: use new JSON output visitor'
011/14:[down] 'qjson: Remove unused file'
012/14:[----] [--] 'qapi: Add qobject_to_json_pretty_prefix()'
013/14:[0004] [FC] 'qapi: Support pretty printing in JSON output visitor'
014/14:[down] 'qemu-img: Use new JSON output formatter'
v1 (RFC) notes:
https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01760.html
Eric Blake (14):
qapi: Rename (one) qjson.h to qobject-json.h
qapi: Improve use of qmp/types.h
qapi: Factor out JSON string escaping
qapi: Factor out JSON number formatting
qapi: Use qstring_append_chr() where appropriate
qapi: Add qstring_append_format()
qapi: add json output visitor
qjson: Simplify by using json-output-visitor
Revert "qjson: Simplify by using json-output-visitor"
vmstate: use new JSON output visitor
qjson: Remove unused file
qapi: Add qobject_to_json_pretty_prefix()
qapi: Support pretty printing in JSON output visitor
qemu-img: Use new JSON output formatter
MAINTAINERS | 2 +-
Makefile.objs | 1 -
balloon.c | 2 +-
block.c | 2 +-
block/archipelago.c | 2 +-
block/nbd.c | 2 +-
block/quorum.c | 2 +-
blockjob.c | 2 +-
hw/core/qdev.c | 2 +-
hw/misc/pvpanic.c | 2 +-
hw/net/virtio-net.c | 2 +-
hw/pci/pcie_aer.c | 1 +
include/migration/vmstate.h | 4 +-
include/qapi/json-output-visitor.h | 25 ++
include/qapi/qmp/{qjson.h => qobject-json.h} | 1 +
include/qapi/qmp/qstring.h | 12 +-
include/qapi/qmp/types.h | 1 -
include/qjson.h | 29 --
migration/savevm.c | 66 ++--
migration/vmstate.c | 63 ++--
monitor.c | 8 +-
qapi/Makefile.objs | 2 +-
qapi/json-output-visitor.c | 222 ++++++++++++
qapi/qmp-dispatch.c | 1 +
qapi/qmp-event.c | 2 +-
qemu-img.c | 69 ++--
qga/main.c | 2 +-
qjson.c | 129 -------
qobject/Makefile.objs | 3 +-
qobject/json-parser.c | 14 +-
qobject/{qjson.c => qobject-json.c} | 147 ++------
qobject/qobject.c | 7 +-
qobject/qstring.c | 117 ++++++-
target-s390x/kvm.c | 2 +-
tests/.gitignore | 3 +-
tests/Makefile | 14 +-
tests/{check-qjson.c => check-qobject-json.c} | 86 ++++-
tests/libqtest.c | 2 +-
tests/qemu-iotests/043.out | 22 +-
tests/test-json-output-visitor.c | 482 ++++++++++++++++++++++++++
tests/test-qmp-input-strict.c | 1 +
tests/test-qmp-input-visitor.c | 1 +
tests/test-qmp-output-visitor.c | 1 +
tests/test-visitor-serialization.c | 1 +
ui/spice-core.c | 2 +-
vl.c | 2 +-
46 files changed, 1126 insertions(+), 439 deletions(-)
create mode 100644 include/qapi/json-output-visitor.h
rename include/qapi/qmp/{qjson.h => qobject-json.h} (90%)
delete mode 100644 include/qjson.h
create mode 100644 qapi/json-output-visitor.c
delete mode 100644 qjson.c
rename qobject/{qjson.c => qobject-json.c} (50%)
rename tests/{check-qjson.c => check-qobject-json.c} (95%)
create mode 100644 tests/test-json-output-visitor.c
--
2.4.3
next reply other threads:[~2015-12-22 0:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-22 0:30 Eric Blake [this message]
2015-12-22 0:30 ` [Qemu-devel] [PATCH v2 01/14] qapi: Rename (one) qjson.h to qobject-json.h Eric Blake
2015-12-22 0:30 ` [Qemu-devel] [PATCH v2 02/14] qapi: Improve use of qmp/types.h Eric Blake
2015-12-23 7:14 ` Fam Zheng
2015-12-22 0:30 ` [Qemu-devel] [PATCH v2 03/14] qapi: Factor out JSON string escaping Eric Blake
2015-12-23 7:20 ` Fam Zheng
2015-12-22 0:30 ` [Qemu-devel] [PATCH v2 04/14] qapi: Factor out JSON number formatting Eric Blake
2015-12-23 7:32 ` Fam Zheng
2015-12-22 0:30 ` [Qemu-devel] [PATCH v2 05/14] qapi: Use qstring_append_chr() where appropriate Eric Blake
2015-12-23 7:32 ` Fam Zheng
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 06/14] qapi: Add qstring_append_format() Eric Blake
2015-12-23 8:31 ` Fam Zheng
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 07/14] qapi: add json output visitor Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 08/14] qjson: Simplify by using json-output-visitor Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 09/14] Revert "qjson: Simplify by using json-output-visitor" Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 10/14] vmstate: use new JSON output visitor Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 11/14] qjson: Remove unused file Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 12/14] qapi: Add qobject_to_json_pretty_prefix() Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 13/14] qapi: Support pretty printing in JSON output visitor Eric Blake
2015-12-23 9:24 ` Fam Zheng
2015-12-23 16:27 ` Eric Blake
2015-12-22 0:31 ` [Qemu-devel] [PATCH v2 14/14] qemu-img: Use new JSON output formatter Eric Blake
2015-12-23 20:57 ` [Qemu-devel] [PATCH v2 00/14] Add qapi-to-JSON output visitor Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1450744268-25052-1-git-send-email-eblake@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).