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 <[email protected]> > --- > +++ 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
