qdev-props: call object_apply_global_props()

It's now possible to use the common function.

Teach object_apply_global_props() to warn if Error argument is NULL.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Marc-André Lureau 2018-11-07 15:35:34 +04:00
parent cff8b715c0
commit 50545b2cc0
2 changed files with 13 additions and 23 deletions

View File

@ -1223,28 +1223,8 @@ int qdev_prop_check_globals(void)
void qdev_prop_set_globals(DeviceState *dev)
{
int i;
for (i = 0; i < global_props()->len; i++) {
GlobalProperty *prop;
Error *err = NULL;
prop = g_ptr_array_index(global_props(), i);
if (object_dynamic_cast(OBJECT(dev), prop->driver) == NULL) {
continue;
}
prop->used = true;
object_property_parse(OBJECT(dev), prop->value, prop->property, &err);
if (err != NULL) {
error_prepend(&err, "can't apply global %s.%s=%s: ",
prop->driver, prop->property, prop->value);
if (!dev->hotplugged) {
error_propagate(&error_fatal, err);
} else {
warn_report_err(err);
}
}
}
object_apply_global_props(OBJECT(dev), global_props(),
dev->hotplugged ? NULL : &error_fatal);
}
/* --- 64bit unsigned int 'size' type --- */

View File

@ -390,7 +390,17 @@ void object_apply_global_props(Object *obj, const GPtrArray *props, Error **errp
if (err != NULL) {
error_prepend(&err, "can't apply global %s.%s=%s: ",
p->driver, p->property, p->value);
error_propagate(errp, err);
/*
* If errp != NULL, propagate error and return.
* If errp == NULL, report a warning, but keep going
* with the remaining globals.
*/
if (errp) {
error_propagate(errp, err);
return;
} else {
warn_report_err(err);
}
}
}
}