qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 3/3] fix qmp/hmp query-memdev not repporting IDs


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH 3/3] fix qmp/hmp query-memdev not repporting IDs of memory backends
Date: Mon, 9 Jan 2017 14:26:28 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0

On 01/09/2017 08:17 AM, Igor Mammedov wrote:

>> Wait. Isn't this going to inject an 'id' dict member to every use of
>> user_creatable_add_type()?  But not all QAPI structs contain an id
>> member.  Which means that you are now explicitly relying on the visitor
>> to silently ignore garbage in the dictionary, rather than our desired
>> goal of only validating if the dictionary exactly matches what the QAPI
>> says it will match.
>>
>> I'm not sure if I like this hack, or if there is a better way to do
>> things when using a strict (rather than relaxed) input visitor.
> a bit less ugly variant but with the same basic idea would look like:
> --------------
> Subject: [PATCH] fix qmp/hmp query-memdev not reporting IDs of memory 
> backends   
>                                                                               
>    
> Considering 'id' is mandatory for user_creatable objects/backends             
>    
> and user_creatable_add_type() always has it as an argument                    
>    
> regardless of where from it is called CLI/monitor or QMP,                     
>    
> Fix issue by adding 'id' property to hostmem backends and                     
>    
> set it in user_creatable_add_type() for every object that                     
>    
> implements 'id' property. Then later at query-memdev time                     
>    
> get 'id' from object directly.                     

Yes, that seems like an improved message.

>                                                                               
>    
> Signed-off-by: Igor Mammedov <address@hidden> 
> 
> [...]
> 
> diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
> index 9b4155a..03a95c3 100644
> --- a/qom/object_interfaces.c
> +++ b/qom/object_interfaces.c
> @@ -62,6 +62,12 @@ Object *user_creatable_add_type(const char *type, const 
> char *id,
>  
>      assert(qdict);
>      obj = object_new(type);
> +    if (object_property_find(obj, "id", NULL)) {
> +        object_property_set_str(obj, id, "id", &local_err);
> +        if (local_err) {
> +            goto out;
> +        }
> +    }

Works for me.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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