[PATCH v2 09/31] qapi/qom: Add ObjectOptions for throttle-group
Eric Blake
eblake at redhat.com
Fri Feb 26 17:26:19 UTC 2021
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 at redhat.com>
> ---
> 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 at redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the libvir-list
mailing list