[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
signature.asc
Description: OpenPGP digital signature