All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/18] Add qapi-to-JSON and clone visitors
@ 2016-04-29  4:23 Eric Blake
  2016-04-29  4:23   ` [Qemu-devel] " Eric Blake
                   ` (18 more replies)
  0 siblings, 19 replies; 78+ messages in thread
From: Eric Blake @ 2016-04-29  4:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: armbru, famz

Prerequisites:
+ my qapi cleanups subset E v16:
https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg04397.html

Note that the series has a mutually exclusive choice: either
patch 8, or patches 10-11. I still haven't gotten any feedback
on which choice seems nicer.

I wrote this series for several reasons:
1. I've been doing a lot of churn in the qapi visitor interfaces
lately; adding two new visitors 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
4. Doing QAPI cloning by round-tripping into and back out of
QObject is wasteful

v2 was here (yes, really 4 months ago):
https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg03929.html

Since then, I've added the clone visitor, and retitled a couple
of patches (so backport-diff gets a bit confused):

001/18:[0004] [FC] 'qapi: Rename (one) qjson.h to qobject-json.h'
002/18:[----] [-C] 'qapi: Improve use of qmp/types.h'
003/18:[0002] [FC] 'qapi: Factor out JSON string escaping'
004/18:[0022] [FC] 'qapi: Factor out JSON number formatting'
005/18:[----] [--] 'qapi: Use qstring_append_chr() where appropriate'
006/18:[0004] [FC] 'qapi: Add qstring_append_format()'
007/18:[down] 'qapi: Add json output visitor'
008/18:[0002] [FC] 'qjson: Simplify by using json-output-visitor'
009/18:[0002] [FC] 'Revert "qjson: Simplify by using json-output-visitor"'
010/18:[down] 'vmstate: Use new JSON output visitor'
011/18:[0002] [FC] 'qjson: Remove unused file'
012/18:[----] [--] 'qapi: Add qobject_to_json_pretty_prefix()'
013/18:[0006] [FC] 'qapi: Support pretty printing in JSON output visitor'
014/18:[0002] [FC] 'qemu-img: Use new JSON output formatter'
015/18:[down] 'qapi: Add new clone visitor'
016/18:[down] 'sockets: Use new QAPI cloning'
017/18:[down] 'replay: Use new QAPI cloning'
018/18:[down] 'qapi: Add parameter to visit_end_*'

Eric Blake (18):
  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
  qapi: Add new clone visitor
  sockets: Use new QAPI cloning
  replay: Use new QAPI cloning
  qapi: Add parameter to visit_end_*

 include/qapi/visitor.h                        |  71 ++--
 include/qapi/visitor-impl.h                   |   7 +-
 scripts/qapi-commands.py                      |   4 +-
 scripts/qapi-event.py                         |   2 +-
 scripts/qapi-types.py                         |  42 +++
 scripts/qapi-visit.py                         |   8 +-
 include/migration/vmstate.h                   |   4 +-
 include/qapi/clone-visitor.h                  |  28 ++
 include/qapi/json-output-visitor.h            |  29 ++
 include/qapi/qmp/{qjson.h => qobject-json.h}  |   1 +
 include/qapi/qmp/qstring.h                    |  10 +-
 include/qapi/qmp/types.h                      |   1 -
 include/qjson.h                               |  29 --
 qapi/qapi-visit-core.c                        |  13 +-
 balloon.c                                     |   2 +-
 block.c                                       |   2 +-
 block/archipelago.c                           |   2 +-
 block/crypto.c                                |   4 +-
 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 +
 hw/ppc/spapr_drc.c                            |   4 +-
 hw/virtio/virtio-balloon.c                    |   4 +-
 migration/savevm.c                            |  68 ++--
 migration/vmstate.c                           |  64 ++--
 monitor.c                                     |   8 +-
 qapi/json-output-visitor.c                    | 221 ++++++++++++
 qapi/opts-visitor.c                           |   4 +-
 qapi/qapi-clone-visitor.c                     | 165 +++++++++
 qapi/qapi-dealloc-visitor.c                   |  47 +--
 qapi/qmp-dispatch.c                           |   1 +
 qapi/qmp-event.c                              |   2 +-
 qapi/qmp-input-visitor.c                      |   2 +-
 qapi/qmp-output-visitor.c                     |   4 +-
 qapi/string-input-visitor.c                   |   2 +-
 qapi/string-output-visitor.c                  |   2 +-
 qemu-img.c                                    |  69 ++--
 qga/main.c                                    |   2 +-
 qjson.c                                       | 129 -------
 qobject/json-parser.c                         |  14 +-
 qobject/qjson.c                               | 296 ----------------
 qobject/qobject-json.c                        | 219 ++++++++++++
 qobject/qobject.c                             |   7 +-
 qobject/qstring.c                             | 123 ++++++-
 qom/object.c                                  |   2 +-
 qom/object_interfaces.c                       |   4 +-
 replay/replay-input.c                         |  30 +-
 target-s390x/kvm.c                            |   2 +-
 tests/{check-qjson.c => check-qobject-json.c} |  86 ++++-
 tests/libqtest.c                              |   2 +-
 tests/test-clone-visitor.c                    | 239 +++++++++++++
 tests/test-json-output-visitor.c              | 482 ++++++++++++++++++++++++++
 tests/test-qmp-input-strict.c                 |   1 +
 tests/test-qmp-input-visitor.c                |   3 +-
 tests/test-qmp-output-visitor.c               |   3 +-
 tests/test-visitor-serialization.c            |   1 +
 ui/spice-core.c                               |   2 +-
 util/qemu-sockets.c                           |  22 +-
 vl.c                                          |   2 +-
 MAINTAINERS                                   |   2 +-
 Makefile.objs                                 |   1 -
 docs/qapi-code-gen.txt                        |  42 ++-
 qapi/Makefile.objs                            |   2 +-
 qobject/Makefile.objs                         |   3 +-
 tests/.gitignore                              |   4 +-
 tests/Makefile                                |  17 +-
 tests/qemu-iotests/043.out                    |  22 +-
 71 files changed, 1917 insertions(+), 786 deletions(-)
 create mode 100644 include/qapi/clone-visitor.h
 create mode 100644 include/qapi/json-output-visitor.h
 rename include/qapi/qmp/{qjson.h => qobject-json.h} (89%)
 delete mode 100644 include/qjson.h
 create mode 100644 qapi/json-output-visitor.c
 create mode 100644 qapi/qapi-clone-visitor.c
 delete mode 100644 qjson.c
 delete mode 100644 qobject/qjson.c
 create mode 100644 qobject/qobject-json.c
 rename tests/{check-qjson.c => check-qobject-json.c} (95%)
 create mode 100644 tests/test-clone-visitor.c
 create mode 100644 tests/test-json-output-visitor.c

-- 
2.5.5

^ permalink raw reply	[flat|nested] 78+ messages in thread

end of thread, other threads:[~2016-05-24  7:15 UTC | newest]

Thread overview: 78+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-29  4:23 [Qemu-devel] [PATCH v3 00/18] Add qapi-to-JSON and clone visitors Eric Blake
2016-04-29  4:23 ` [PATCH v3 01/18] qapi: Rename (one) qjson.h to qobject-json.h Eric Blake
2016-04-29  4:23   ` [Qemu-devel] " Eric Blake
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 02/18] qapi: Improve use of qmp/types.h Eric Blake
2016-04-29 11:46   ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 03/18] qapi: Factor out JSON string escaping Eric Blake
2016-04-29 12:09   ` Markus Armbruster
2016-04-29 17:57     ` Eric Blake
2016-05-03  7:36       ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 04/18] qapi: Factor out JSON number formatting Eric Blake
2016-04-29 13:22   ` Markus Armbruster
2016-04-29 13:43     ` Eric Blake
2016-05-03  8:02       ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 05/18] qapi: Use qstring_append_chr() where appropriate Eric Blake
2016-04-29 13:25   ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 06/18] qapi: Add qstring_append_format() Eric Blake
2016-04-29 13:40   ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 07/18] qapi: Add json output visitor Eric Blake
2016-05-02  9:15   ` Markus Armbruster
2016-05-02 15:11     ` Eric Blake
2016-05-03  8:22       ` Markus Armbruster
2016-05-04 15:45         ` Markus Armbruster
2016-05-06  4:16           ` Eric Blake
2016-05-06 12:31             ` Markus Armbruster
2016-05-06 14:08               ` Eric Blake
2016-05-10  4:22                 ` Eric Blake
2016-05-18 15:16     ` Eric Blake
2016-05-18 15:24       ` Eric Blake
2016-05-02 15:00   ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 08/18] qjson: Simplify by using json-output-visitor Eric Blake
2016-05-02 12:45   ` Markus Armbruster
2016-05-02 12:49     ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 09/18] Revert "qjson: Simplify by using json-output-visitor" Eric Blake
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 10/18] vmstate: Use new JSON output visitor Eric Blake
2016-05-02 13:26   ` Markus Armbruster
2016-05-02 14:23     ` Eric Blake
2016-05-03  8:30       ` Markus Armbruster
2016-05-03  9:44   ` Dr. David Alan Gilbert
2016-05-03 12:26     ` Markus Armbruster
2016-05-03 12:34       ` Eric Blake
2016-05-03 13:27         ` Dr. David Alan Gilbert
2016-05-04  8:39           ` Markus Armbruster
2016-05-04  8:54             ` Dr. David Alan Gilbert
2016-05-24  7:15               ` Paolo Bonzini
2016-05-03 13:23       ` Dr. David Alan Gilbert
2016-05-04  9:11         ` Markus Armbruster
2016-05-04  9:22           ` Dr. David Alan Gilbert
2016-05-04 11:37             ` Markus Armbruster
2016-05-04 11:56               ` Dr. David Alan Gilbert
2016-05-04 13:00                 ` Markus Armbruster
2016-05-04 13:19                   ` Dr. David Alan Gilbert
2016-05-04 14:10                     ` Markus Armbruster
2016-05-04 14:53                       ` Dr. David Alan Gilbert
2016-05-04 15:17                         ` Eric Blake
2016-05-04 15:42                         ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 11/18] qjson: Remove unused file Eric Blake
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 12/18] qapi: Add qobject_to_json_pretty_prefix() Eric Blake
2016-05-02 13:56   ` Markus Armbruster
2016-05-02 15:14     ` Eric Blake
2016-05-03  8:32       ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 13/18] qapi: Support pretty printing in JSON output visitor Eric Blake
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 14/18] qemu-img: Use new JSON output formatter Eric Blake
2016-05-02 14:04   ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 15/18] qapi: Add new clone visitor Eric Blake
2016-05-02 17:54   ` Markus Armbruster
2016-05-02 19:25     ` Eric Blake
2016-05-03 11:36       ` Markus Armbruster
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 16/18] sockets: Use new QAPI cloning Eric Blake
2016-04-29  8:30   ` Daniel P. Berrange
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 17/18] replay: " Eric Blake
2016-04-29  4:23 ` [Qemu-devel] [PATCH v3 18/18] qapi: Add parameter to visit_end_* Eric Blake
2016-05-02 18:20   ` Markus Armbruster
2016-05-02 19:31     ` Eric Blake
2016-05-03 11:53       ` Markus Armbruster
2016-05-03 12:41         ` Eric Blake
2016-05-09  8:50 ` [Qemu-devel] [PATCH v3 00/18] Add qapi-to-JSON and clone visitors Paolo Bonzini
2016-05-09  9:29   ` Paolo Bonzini
2016-05-09 14:52     ` Eric Blake

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.