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: Tue, 3 Jan 2017 09:34:40 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1

On 01/02/2017 09:44 AM, Igor Mammedov wrote:

s/repporting/reporting/ in the subject

> Do it by adding 'id' property to hostmem backends and fetch it
> in query-memdev from object directly.
> 
> Signed-off-by: Igor Mammedov <address@hidden>
> ---

> +++ b/qom/object_interfaces.c
> @@ -4,6 +4,7 @@
>  #include "qemu/module.h"
>  #include "qapi-visit.h"
>  #include "qapi/opts-visitor.h"
> +#include "qapi/qmp/qstring.h"
>  
>  void user_creatable_complete(Object *obj, Error **errp)
>  {
> @@ -35,7 +36,7 @@ bool user_creatable_can_be_deleted(UserCreatable *uc, Error 
> **errp)
>  }
>  
>  Object *user_creatable_add_type(const char *type, const char *id,
> -                                const QDict *qdict,
> +                                QDict *qdict,
>                                  Visitor *v, Error **errp)
>  {
>      Object *obj;
> @@ -62,6 +63,9 @@ Object *user_creatable_add_type(const char *type, const 
> char *id,
>  
>      assert(qdict);
>      obj = object_new(type);
> +    if (object_property_find(obj, "id", NULL)) {
> +        qdict_put(qdict, "id", qstring_from_str(id));
> +    }

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.

>      visit_start_struct(v, NULL, NULL, 0, &local_err);
>      if (local_err) {
>          goto out;
> 

-- 
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]