qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 16/18] qapi: Create 'pragma' module


From: Markus Armbruster
Subject: Re: [RFC PATCH 16/18] qapi: Create 'pragma' module
Date: Tue, 12 Nov 2019 10:41:39 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)

Kevin Wolf <address@hidden> writes:

> We want to share the whitelists between the system emulator schema and
> the storage daemon schema, so move all the pragmas from the main schema
> file into a separate file that can be included from both.

Confusing because the storage daemon schema doesn't exist at this point.
PATCH 13's commit message has the same issue.

I'll revisit this when I review PATCH 18.

>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  qapi/pragma.json      | 24 ++++++++++++++++++++++++
>  qapi/qapi-schema.json | 25 +------------------------
>  qapi/Makefile.objs    |  2 +-
>  3 files changed, 26 insertions(+), 25 deletions(-)
>  create mode 100644 qapi/pragma.json
>
> diff --git a/qapi/pragma.json b/qapi/pragma.json
> new file mode 100644
> index 0000000000..cffae27666
> --- /dev/null
> +++ b/qapi/pragma.json
> @@ -0,0 +1,24 @@
> +{ 'pragma': { 'doc-required': true } }
> +
> +# Whitelists to permit QAPI rule violations; think twice before you
> +# add to them!
> +{ 'pragma': {
> +    # Commands allowed to return a non-dictionary:
> +    'returns-whitelist': [
> +        'human-monitor-command',
> +        'qom-get',
> +        'query-migrate-cache-size',
> +        'query-tpm-models',
> +        'query-tpm-types',
> +        'ringbuf-read' ],
> +    'name-case-whitelist': [
> +        'ACPISlotType',             # DIMM, visible through 
> query-acpi-ospm-status
> +        'CpuInfoMIPS',              # PC, visible through query-cpu
> +        'CpuInfoTricore',           # PC, visible through query-cpu
> +        'BlockdevVmdkSubformat',    # all members, to match VMDK spec 
> spellings
> +        'BlockdevVmdkAdapterType',  # legacyESX, to match VMDK spec spellings
> +        'QapiErrorClass',           # all members, visible through errors
> +        'UuidInfo',                 # UUID, visible through query-uuid
> +        'X86CPURegister32',         # all members, visible indirectly 
> through qom-get
> +        'CpuInfo'                   # CPU, visible through query-cpu
> +    ] } }
> diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> index be90422ffe..85b4048535 100644
> --- a/qapi/qapi-schema.json
> +++ b/qapi/qapi-schema.json
> @@ -49,30 +49,7 @@
>  #
>  ##
>  
> -{ 'pragma': { 'doc-required': true } }
> -
> -# Whitelists to permit QAPI rule violations; think twice before you
> -# add to them!
> -{ 'pragma': {
> -    # Commands allowed to return a non-dictionary:
> -    'returns-whitelist': [
> -        'human-monitor-command',
> -        'qom-get',
> -        'query-migrate-cache-size',
> -        'query-tpm-models',
> -        'query-tpm-types',
> -        'ringbuf-read' ],
> -    'name-case-whitelist': [
> -        'ACPISlotType',             # DIMM, visible through 
> query-acpi-ospm-status
> -        'CpuInfoMIPS',              # PC, visible through query-cpu
> -        'CpuInfoTricore',           # PC, visible through query-cpu
> -        'BlockdevVmdkSubformat',    # all members, to match VMDK spec 
> spellings
> -        'BlockdevVmdkAdapterType',  # legacyESX, to match VMDK spec spellings
> -        'QapiErrorClass',           # all members, visible through errors
> -        'UuidInfo',                 # UUID, visible through query-uuid
> -        'X86CPURegister32',         # all members, visible indirectly 
> through qom-get
> -        'CpuInfo'                   # CPU, visible through query-cpu
> -    ] } }
> +{ 'include': 'pragma.json' }
>  
>  # Documentation generated with qapi-gen.py is in source order, with
>  # included sub-schemas inserted at the first include directive
> diff --git a/qapi/Makefile.objs b/qapi/Makefile.objs
> index 519b6f1a8e..3e04e299ed 100644
> --- a/qapi/Makefile.objs
> +++ b/qapi/Makefile.objs
> @@ -7,7 +7,7 @@ util-obj-y += qapi-util.o
>  
>  QAPI_COMMON_MODULES = audio authz block-core block char common crypto
>  QAPI_COMMON_MODULES += dump error introspect job machine migration misc 
> monitor
> -QAPI_COMMON_MODULES += net qdev qom rdma rocker run-state sockets tpm
> +QAPI_COMMON_MODULES += net pragma qdev qom rdma rocker run-state sockets tpm
>  QAPI_COMMON_MODULES += trace transaction ui
>  QAPI_TARGET_MODULES = machine-target misc-target
>  QAPI_MODULES = $(QAPI_COMMON_MODULES) $(QAPI_TARGET_MODULES)

Only works because we accept and ignore names in these whitelists that
don't exist in the schema.

Which parts of the whitelists are actually needed in the storage daemon?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]