From: Eric Blake <eblake@redhat.com>
To: qemu-devel@nongnu.org
Cc: armbru@redhat.com, Eduardo Habkost <ehabkost@redhat.com>
Subject: [Qemu-devel] [PATCH v10 00/25] qapi collision reduction (post-introspection subset B')
Date: Thu, 22 Oct 2015 23:09:33 -0600 [thread overview]
Message-ID: <1445576998-2921-1-git-send-email-eblake@redhat.com> (raw)
No pending prerequisites (applies to current master)
Also available as a tag at this location:
git fetch git://repo.or.cz/qemu/ericb.git qapi-cleanupv10b
and I plan to eventually forcefully update my branch with the rest
of the v5 series, at:
http://repo.or.cz/qemu/ericb.git/shortlog/refs/heads/qapi
v10 notes:
Rebase to master, reduce churn in the testsuite (particularly for
things that disappear once the named union conversion is complete),
and rearrange various hunks either forward or backward. 17 patches
turned into 25, because I split things. Also, several patches got
retitled, which messes up git backport-diff reporting, but some
survived unscathed:
001/25:[down] 'tests/qapi-schema: Test for reserved names, empty struct'
002/25:[down] 'qapi: More idiomatic string operations'
003/25:[down] 'qapi: More robust conditions for when labels are needed'
004/25:[down] 'qapi: Reserve '*List' type names for list types'
005/25:[down] 'qapi: Reserve 'q_*' and 'has_*' member names'
006/25:[down] 'vnc: Hoist allocation of VncBasicInfo to callers'
007/25:[down] 'qapi-visit: Split off visit_type_FOO_fields forward decl'
008/25:[down] 'qapi-types: Refactor base fields output'
009/25:[down] 'qapi: Prefer typesafe upcasts to qapi base classes'
010/25:[0079] [FC] 'qapi: Unbox base members'
011/25:[0005] [FC] 'qapi-visit: Remove redundant functions for flat union base'
012/25:[0032] [FC] 'qapi: Start converting to new qapi union layout'
013/25:[down] 'qapi-visit: Convert to new qapi union layout'
014/25:[0010] [FC] 'tests: Convert to new qapi union layout'
015/25:[----] [--] 'block: Convert to new qapi union layout'
016/25:[down] 'sockets: Convert to new qapi union layout'
017/25:[----] [--] 'net: Convert to new qapi union layout'
018/25:[----] [--] 'char: Convert to new qapi union layout'
019/25:[----] [--] 'input: Convert to new qapi union layout'
020/25:[----] [--] 'memory: Convert to new qapi union layout'
021/25:[----] [--] 'tpm: Convert to new qapi union layout'
022/25:[0008] [FC] 'qapi: Finish converting to new qapi union layout'
023/25:[down] 'qapi: Reserve 'u' member name'
024/25:[down] 'qapi: Remove outdated tests related to QMP/branch collisions'
025/25:[----] [-C] 'qapi: Simplify gen_struct_field()'
v9 notes:
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg03730.html
Calling this subset B', because it is mostly new content, but
based heavily on review comments on subset B. Also, I need to
rebase pending subset C on top of this. A couple patches
from v5 have been hoisted earlier into the series; while v8
11/18 (Simplify gen_struct_field()) makes an appearance at the
end, and v8 10/18 (Move union tag quirks into subclass) is all
but eliminated. Since the concepts of these patches has been
on the list for a while, it should be safe to take even during
soft freeze, even if the actual versions of these patches have
lots of new content.
The general goal of this batch of patches is to rework the C
layout of qapi unions so that we get rid of the type/kind
mismatch and isolate tag values from colliding with QMP names.
The tail end of v8 (detecting collisions in check()) will have
to wait a bit longer, but it should be a lot easier to reason
about now that there are fewer collisions possible.
Not worth a backport diff, since most of it is new or previously
unreviewed.
v8 notes:
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg02879.html
Address review comments, including fixing a bug with tracking
branch name collisions. Include a few more simple test cleanups
(4-6), and add another patch (11) that will make converting from
kind=>type easier in a later subset. More details in per-patch
changelogs.
v7 notes:
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg01387.html
Address comments, including a couple of new commits that made
later patches a bit cleaner. Backport diff gets a bit confused
by a couple of patch titles changing.
v6 notes:
https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg00562.html
This is patches 11-16 of my v5 series; it has grown a bit with
splitting some patches and adding some others. I suspect that
12/12 on this series will be discarded, but am including it because
it was split from v5 content.
Not much review comments other than on the original 11/46, but there
is enough churn due to rebasing that it's now easier to review this
version than plowing through v5.
Subset C (and more?) will come later.
In v5:
https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg05410.html
I _did_ rearrange patches to try and group related features:
1-2: Groundwork cleanups
3-5: Add more test cases
6-16: Front-end cleanups
17-18: Introspection output cleanups
19-20: 'alternate' type cleanups
21-29: qapi visitor cleanups
30-45: qapi-ify netdev_add
46: add qapi shorthand for flat unions
Lots of fixes based on additional testing, and rebased to
track other changes that happened in the meantime. The series
is huge; I can split off smaller portions as requested.
In v4:
https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg02580.html
add some more clean up patches
rebase to Markus' recent work
pull in part of Zoltán's work to make netdev_add a flat union,
further enhancing it to be introspectible
I might be able to rearrange some of these patches, or separate
it into smaller independent series, if requested; but I'm
posting now to get review started.
In v3:
https://lists.gnu.org/archive/html/qemu-devel/2015-08/msg02059.html
redo cleanup of dealloc of partial struct
add patches to make all visit_type_*() avoid leaks on failure
add patches to allow boxed command arguments and events
In v2:
https://lists.gnu.org/archive/html/qemu-devel/2015-08/msg00900.html
rebase to Markus' v3 series
rework how comments are emitted for fields inherited from base
additional patches added for deleting colliding 'void *data'
documentation updates to match code changes
v1 was here:
https://lists.gnu.org/archive/html/qemu-devel/2015-07/msg05266.html
https://lists.gnu.org/archive/html/qemu-devel/2015-07/msg05325.html
Eric Blake (25):
tests/qapi-schema: Test for reserved names, empty struct
qapi: More idiomatic string operations
qapi: More robust conditions for when labels are needed
qapi: Reserve '*List' type names for list types
qapi: Reserve 'q_*' and 'has_*' member names
vnc: Hoist allocation of VncBasicInfo to callers
qapi-visit: Split off visit_type_FOO_fields forward decl
qapi-types: Refactor base fields output
qapi: Prefer typesafe upcasts to qapi base classes
qapi: Unbox base members
qapi-visit: Remove redundant functions for flat union base
qapi: Start converting to new qapi union layout
qapi-visit: Convert to new qapi union layout
tests: Convert to new qapi union layout
block: Convert to new qapi union layout
sockets: Convert to new qapi union layout
net: Convert to new qapi union layout
char: Convert to new qapi union layout
input: Convert to new qapi union layout
memory: Convert to new qapi union layout
tpm: Convert to new qapi union layout
qapi: Finish converting to new qapi union layout
qapi: Reserve 'u' member name
qapi: Remove outdated tests related to QMP/branch collisions
qapi: Simplify gen_struct_field()
block/nbd.c | 18 +--
block/qcow2.c | 10 +-
block/vmdk.c | 6 +-
blockdev.c | 47 +++---
docs/qapi-code-gen.txt | 14 +-
hmp.c | 26 ++--
hw/char/escc.c | 12 +-
hw/input/hid.c | 32 ++---
hw/input/ps2.c | 24 ++--
hw/input/virtio-input-hid.c | 27 ++--
hw/mem/pc-dimm.c | 6 +-
net/dump.c | 4 +-
net/hub.c | 4 +-
net/l2tpv3.c | 4 +-
net/net.c | 24 ++--
net/slirp.c | 4 +-
net/socket.c | 4 +-
net/tap-win32.c | 4 +-
net/tap.c | 8 +-
net/vde.c | 4 +-
net/vhost-user.c | 4 +-
numa.c | 8 +-
qemu-char.c | 160 ++++++++++-----------
qemu-nbd.c | 16 +--
scripts/qapi-commands.py | 2 +-
scripts/qapi-types.py | 65 +++++----
scripts/qapi-visit.py | 94 ++++++------
scripts/qapi.py | 29 ++--
spice-qemu-char.c | 12 +-
tests/Makefile | 9 +-
tests/qapi-schema/args-has-clash.err | 1 +
.../{union-clash-type.exit => args-has-clash.exit} | 0
tests/qapi-schema/args-has-clash.json | 6 +
.../{union-clash-type.out => args-has-clash.out} | 0
tests/qapi-schema/flat-union-clash-branch.exit | 1 -
tests/qapi-schema/flat-union-clash-branch.json | 18 ---
tests/qapi-schema/flat-union-clash-branch.out | 14 --
tests/qapi-schema/flat-union-clash-type.err | 1 -
tests/qapi-schema/flat-union-clash-type.json | 14 --
tests/qapi-schema/qapi-schema-test.json | 4 +
tests/qapi-schema/qapi-schema-test.out | 3 +
tests/qapi-schema/reserved-command.err | 1 +
...union-clash-type.exit => reserved-command.exit} | 0
tests/qapi-schema/reserved-command.json | 6 +
...ct-base-clash-base.err => reserved-command.out} | 0
tests/qapi-schema/reserved-member.err | 1 +
tests/qapi-schema/reserved-member.exit | 1 +
tests/qapi-schema/reserved-member.json | 5 +
...at-union-clash-type.out => reserved-member.out} | 0
tests/qapi-schema/struct-base-clash-base.exit | 1 -
tests/qapi-schema/struct-base-clash-base.json | 9 --
tests/qapi-schema/struct-base-clash-base.out | 5 -
tests/qapi-schema/struct-member-u.err | 1 +
tests/qapi-schema/struct-member-u.exit | 1 +
tests/qapi-schema/struct-member-u.json | 7 +
...-union-clash-branch.err => struct-member-u.out} | 0
tests/qapi-schema/struct-name-list.err | 1 +
tests/qapi-schema/struct-name-list.exit | 1 +
tests/qapi-schema/struct-name-list.json | 5 +
tests/qapi-schema/struct-name-list.out | 0
tests/qapi-schema/union-clash-type.err | 1 -
tests/qapi-schema/union-clash-type.json | 9 --
tests/test-qmp-commands.c | 19 +--
tests/test-qmp-event.c | 8 +-
tests/test-qmp-input-visitor.c | 82 +++++------
tests/test-qmp-output-visitor.c | 55 ++++---
tests/test-visitor-serialization.c | 14 +-
tpm.c | 4 +-
ui/console.c | 20 +--
ui/input-keymap.c | 20 +--
ui/input-legacy.c | 21 +--
ui/input.c | 84 +++++------
ui/spice-core.c | 23 +--
ui/vnc.c | 114 ++++++++-------
util/qemu-sockets.c | 62 ++++----
75 files changed, 654 insertions(+), 670 deletions(-)
create mode 100644 tests/qapi-schema/args-has-clash.err
rename tests/qapi-schema/{union-clash-type.exit => args-has-clash.exit} (100%)
create mode 100644 tests/qapi-schema/args-has-clash.json
rename tests/qapi-schema/{union-clash-type.out => args-has-clash.out} (100%)
delete mode 100644 tests/qapi-schema/flat-union-clash-branch.exit
delete mode 100644 tests/qapi-schema/flat-union-clash-branch.json
delete mode 100644 tests/qapi-schema/flat-union-clash-branch.out
delete mode 100644 tests/qapi-schema/flat-union-clash-type.err
delete mode 100644 tests/qapi-schema/flat-union-clash-type.json
create mode 100644 tests/qapi-schema/reserved-command.err
rename tests/qapi-schema/{flat-union-clash-type.exit => reserved-command.exit} (100%)
create mode 100644 tests/qapi-schema/reserved-command.json
rename tests/qapi-schema/{struct-base-clash-base.err => reserved-command.out} (100%)
create mode 100644 tests/qapi-schema/reserved-member.err
create mode 100644 tests/qapi-schema/reserved-member.exit
create mode 100644 tests/qapi-schema/reserved-member.json
rename tests/qapi-schema/{flat-union-clash-type.out => reserved-member.out} (100%)
delete mode 100644 tests/qapi-schema/struct-base-clash-base.exit
delete mode 100644 tests/qapi-schema/struct-base-clash-base.json
delete mode 100644 tests/qapi-schema/struct-base-clash-base.out
create mode 100644 tests/qapi-schema/struct-member-u.err
create mode 100644 tests/qapi-schema/struct-member-u.exit
create mode 100644 tests/qapi-schema/struct-member-u.json
rename tests/qapi-schema/{flat-union-clash-branch.err => struct-member-u.out} (100%)
create mode 100644 tests/qapi-schema/struct-name-list.err
create mode 100644 tests/qapi-schema/struct-name-list.exit
create mode 100644 tests/qapi-schema/struct-name-list.json
create mode 100644 tests/qapi-schema/struct-name-list.out
delete mode 100644 tests/qapi-schema/union-clash-type.err
delete mode 100644 tests/qapi-schema/union-clash-type.json
--
2.4.3
next reply other threads:[~2015-10-23 5:10 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-23 5:09 Eric Blake [this message]
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 01/25] tests/qapi-schema: Test for reserved names, empty struct Eric Blake
2015-10-23 12:33 ` Markus Armbruster
2015-10-23 12:39 ` Eric Blake
2015-10-23 14:17 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 02/25] qapi: More idiomatic string operations Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 03/25] qapi: More robust conditions for when labels are needed Eric Blake
2015-10-23 12:44 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 04/25] qapi: Reserve '*List' type names for list types Eric Blake
2015-10-23 12:53 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 05/25] qapi: Reserve 'q_*' and 'has_*' member names Eric Blake
2015-10-23 13:05 ` Markus Armbruster
2015-10-23 14:14 ` Eric Blake
2015-10-23 14:47 ` Markus Armbruster
2015-10-23 14:52 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 06/25] vnc: Hoist allocation of VncBasicInfo to callers Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 07/25] qapi-visit: Split off visit_type_FOO_fields forward decl Eric Blake
2015-10-23 13:46 ` Markus Armbruster
2015-10-23 14:35 ` Eric Blake
2015-10-23 18:05 ` Markus Armbruster
2015-10-23 19:44 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 08/25] qapi-types: Refactor base fields output Eric Blake
2015-10-23 15:06 ` Markus Armbruster
2015-10-23 15:16 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 09/25] qapi: Prefer typesafe upcasts to qapi base classes Eric Blake
2015-10-23 15:30 ` Markus Armbruster
2015-10-23 20:44 ` Eric Blake
2015-10-26 7:33 ` Markus Armbruster
2015-10-26 16:24 ` Eric Blake
2015-10-26 17:54 ` Markus Armbruster
2015-10-26 20:53 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 10/25] qapi: Unbox base members Eric Blake
2015-10-23 19:14 ` Markus Armbruster
2015-10-23 19:19 ` Eric Blake
2015-10-23 20:45 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 11/25] qapi-visit: Remove redundant functions for flat union base Eric Blake
2015-10-23 19:35 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 12/25] qapi: Start converting to new qapi union layout Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 13/25] qapi-visit: Convert " Eric Blake
2015-10-26 17:07 ` Markus Armbruster
2015-10-26 20:39 ` Eric Blake
2015-10-27 7:08 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 14/25] tests: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 15/25] block: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 16/25] sockets: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 17/25] net: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 18/25] char: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 19/25] input: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 20/25] memory: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 21/25] tpm: " Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 22/25] qapi: Finish converting " Eric Blake
2015-10-27 8:33 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 23/25] qapi: Reserve 'u' member name Eric Blake
2015-10-26 17:27 ` Markus Armbruster
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 24/25] qapi: Remove outdated tests related to QMP/branch collisions Eric Blake
2015-10-23 23:27 ` Eric Blake
2015-10-23 5:09 ` [Qemu-devel] [PATCH v10 25/25] qapi: Simplify gen_struct_field() Eric Blake
2015-10-26 17:55 ` [Qemu-devel] [PATCH v10 00/25] qapi collision reduction (post-introspection subset B') Markus Armbruster
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=1445576998-2921-1-git-send-email-eblake@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=ehabkost@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).