[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
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-devel] [PATCH 1/3] cleanup: remove not used header, (continued)
[Qemu-devel] [PATCH 2/3] reuse user_creatable_add_opts() instead of user_creatable_add() in monitor, Igor Mammedov, 2017/01/02
[Qemu-devel] [PATCH 3/3] fix qmp/hmp query-memdev not repporting IDs of memory backends, Igor Mammedov, 2017/01/02