On 2/24/21 7:52 AM, Kevin Wolf wrote: > This adds a QAPI schema for the properties of the throttle-group object. > > The only purpose of the x-* properties is to make the nested options in > 'limits' available for a command line parser that doesn't support > structs. Any parser that will use the QAPI schema will supports structs, > though, so they will not be needed in the schema in the future. > > To keep the conversion straightforward, add them to the schema anyway. > We can then remove the options and adjust documentation, test cases etc. > in a separate patch. > > Signed-off-by: Kevin Wolf <kwolf@xxxxxxxxxx> > --- > qapi/block-core.json | 27 +++++++++++++++++++++++++++ > qapi/qom.json | 7 +++++-- > 2 files changed, 32 insertions(+), 2 deletions(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 9f555d5c1d..a67fa0cc59 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -2504,6 +2504,33 @@ > '*bps-write-max' : 'int', '*bps-write-max-length' : 'int', > '*iops-size' : 'int' } } > > +## > +# @ThrottleGroupProperties: > +# > +# Properties for throttle-group objects. Corresponds to block/throttle-groups.c:throttle_group_obj_class_init() with its ThrottleParamInfo struct for the x- fields, and limits as-is. > +# > +# The options starting with x- are aliases for the same key without x- in > +# the @limits object. As indicated by the x- prefix, this is not a stable > +# interface and may be removed or changed incompatibly in the future. Use > +# @limits for a supported stable interface. > +# > +# @limits: limits to apply for this throttle group And I did check that qapi/block-core.json:ThrottleLimits has the same fields as the ThrottleParamInfo x- fields. All this duplication! But we're getting to a state where it will be easier to clean up the cruft. > +# > +# Since: 2.11 > +## > +{ 'struct': 'ThrottleGroupProperties', > + 'data': { '*limits': 'ThrottleLimits', > + '*x-iops-total' : 'int', '*x-iops-total-max' : 'int', > + '*x-iops-total-max-length' : 'int', '*x-iops-read' : 'int', > + '*x-iops-read-max' : 'int', '*x-iops-read-max-length' : 'int', > + '*x-iops-write' : 'int', '*x-iops-write-max' : 'int', > + '*x-iops-write-max-length' : 'int', '*x-bps-total' : 'int', > + '*x-bps-total-max' : 'int', '*x-bps-total-max-length' : 'int', > + '*x-bps-read' : 'int', '*x-bps-read-max' : 'int', > + '*x-bps-read-max-length' : 'int', '*x-bps-write' : 'int', > + '*x-bps-write-max' : 'int', '*x-bps-write-max-length' : 'int', > + '*x-iops-size' : 'int' } } > + > ## > # @block-stream: > # > diff --git a/qapi/qom.json b/qapi/qom.json > index 73f28f9608..449dca8ec5 100644 > --- a/qapi/qom.json > +++ b/qapi/qom.json > @@ -5,6 +5,7 @@ > # See the COPYING file in the top-level directory. > > { 'include': 'authz.json' } > +{ 'include': 'block-core.json' } > { 'include': 'common.json' } > > ## > @@ -447,7 +448,8 @@ > 'memory-backend-ram', > 'rng-builtin', > 'rng-egd', > - 'rng-random' > + 'rng-random', > + 'throttle-group' > ] } > > ## > @@ -480,7 +482,8 @@ > 'memory-backend-ram': 'MemoryBackendProperties', > 'rng-builtin': 'RngProperties', > 'rng-egd': 'RngEgdProperties', > - 'rng-random': 'RngRandomProperties' > + 'rng-random': 'RngRandomProperties', > + 'throttle-group': 'ThrottleGroupProperties' > } } > > ## > Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org