Eric Blake <ebl...@redhat.com> writes: > It's time to expose QMP 'netdev_add' through introspection, and > to add boxed commands/events so that we can drastically reduce > the number of C parameters needed to implement a command that > matches a large QAPI type. > > Prerequistes: > Markus' qapi-next branch (including my clone visitor) > > available as a tag at: > git fetch git://repo.or.cz/qemu/ericb.git qapi-cleanupv8f > or as part of my qapi branch: > git fetch git://repo.or.cz/qemu/ericb.git qapi > > v7 was here: > https://lists.gnu.org/archive/html/qemu-devel/2016-05/msg03569.html > > Since then, I've addressed a lot of Markus' comments: > - drop 1/15 > - split out a couple of patches > - wording tweaks, more justifications in some commit messages > - rebase to master > - allow boxed alternates, in addition to boxed unions > - forbid empty anonymous branches for now > > 001/16:[----] [--] 'net: use Netdev instead of NetClientOptions in client > init' > 002/16:[----] [--] 'qapi: Require all branches of flat union enum to be > covered' > 003/16:[----] [--] 'qapi: Hide tag_name data member of variants' > 004/16:[0006] [FC] 'qapi: Add type.is_empty() helper' > 005/16:[down] 'qapi: Drop useless gen_err_check()' > 006/16:[down] 'qapi-event: Simplify visit of non-implicit data' > 007/16:[0028] [FC] 'qapi: Plumb in 'box' to qapi generator lower levels' > 008/16:[0121] [FC] 'qapi: Implement boxed types for commands/events' > 009/16:[0002] [FC] 'block: Simplify block_set_io_throttle' > 010/16:[0023] [FC] 'block: Simplify drive-mirror' > 011/16:[0026] [FC] 'qapi-event: Reduce chance of collision with event data' > 012/16:[0042] [FC] 'qapi: Change Netdev into a flat union' > 013/16:[----] [--] 'net: Use correct type for bool flag' > 014/16:[0008] [FC] 'net: Complete qapi-fication of netdev_add' > 015/16:[0037] [FC] 'qapi: Allow anonymous branch types in flat union' > 016/16:[----] [--] 'schema: Drop pointless empty type CpuInfoOther'
Let's focus on PATCH 01-14 for now. I think we have a decent chance to merge them quickly. 15 and 16 provide a nice extra, but I need to stare at 15 a bit more to decide whether I like it, or how to do it differently. > Other patches on my QAPI queue: > - posted, but needs another respin and might not make 2.7: > JSON output visitor I don't think this one's blocking anything. > - not posted, and therefore most likely not 2.7 material: > anything we need to do to make 'blockdev-add' work smoothly > (we may want to allow a flat union with a default value for its > discriminator, and/or add a way to express mutually-exclusive > members in a qapi dict) I'd like us to think through the needs blockdev-add may have before rushing to add more QAPI features. > Other potential general QAPI patches, but not necessarily that I will write: > - Marc-Andre's cleanups Next in line :) > - convert more clients to use boxed commands Can be done in parallel. > - get rid of has_FOO when FOO is pointer Shouldn't be hard. > - support default values (and get rid of has_FOO when FOO has default) I like the idea, but I think we should do some of the other things first. > - QAPI-fy device_add Need something to talk about in Toronto ;) > - ??? - Fold semantic analysis into QAPISchema (a TODO in qapi.py) This is just paying back technical debt.