From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gWPLq-00044B-2b for qemu-devel@nongnu.org; Mon, 10 Dec 2018 12:28:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gWPLm-0001kU-Uw for qemu-devel@nongnu.org; Mon, 10 Dec 2018 12:28:14 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41684) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gWPLm-0001k0-LS for qemu-devel@nongnu.org; Mon, 10 Dec 2018 12:28:10 -0500 Date: Mon, 10 Dec 2018 18:28:01 +0100 From: Igor Mammedov Message-ID: <20181210182801.7eda2151@Igors-MacBook-Pro.local> In-Reply-To: <20181204142023.15982-15-marcandre.lureau@redhat.com> References: <20181204142023.15982-1-marcandre.lureau@redhat.com> <20181204142023.15982-15-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH for-3.2 v5 14/19] qdev-props: call object_apply_global_props() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?Q?Marc-Andr=C3=A9?= Lureau Cc: qemu-devel@nongnu.org, ehabkost@redhat.com, Andreas =?UTF-8?Q?F=C3=A4r?= =?UTF-8?Q?ber?= On Tue, 4 Dec 2018 18:20:18 +0400 Marc-Andr=C3=A9 Lureau wrote: > It's now possible to use the common function. >=20 > Teach object_apply_global_props() to warn if Error argument is NULL. >=20 > Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Igor Mammedov > --- > hw/core/qdev-properties.c | 24 ++---------------------- > qom/object.c | 12 +++++++++++- > 2 files changed, 13 insertions(+), 23 deletions(-) >=20 > diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c > index a2d25d3d37..6061090dc2 100644 > --- a/hw/core/qdev-properties.c > +++ b/hw/core/qdev-properties.c > @@ -1223,28 +1223,8 @@ int qdev_prop_check_globals(void) > =20 > void qdev_prop_set_globals(DeviceState *dev) > { > - int i; > - > - for (i =3D 0; i < global_props()->len; i++) { > - GlobalProperty *prop; > - Error *err =3D NULL; > - > - prop =3D g_ptr_array_index(global_props(), i); > - if (object_dynamic_cast(OBJECT(dev), prop->driver) =3D=3D NULL) { > - continue; > - } > - prop->used =3D true; > - object_property_parse(OBJECT(dev), prop->value, prop->property, = &err); > - if (err !=3D NULL) { > - error_prepend(&err, "can't apply global %s.%s=3D%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); > } > =20 > /* --- 64bit unsigned int 'size' type --- */ > diff --git a/qom/object.c b/qom/object.c > index dbdab0aead..aa6f3a2a71 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -390,7 +390,17 @@ void object_apply_global_props(Object *obj, const GP= trArray *props, Error **errp > if (err !=3D NULL) { > error_prepend(&err, "can't apply global %s.%s=3D%s: ", > p->driver, p->property, p->value); > - error_propagate(errp, err); > + /* > + * If errp !=3D NULL, propagate error and return. > + * If errp =3D=3D NULL, report a warning, but keep going > + * with the remaining globals. > + */ > + if (errp) { > + error_propagate(errp, err); > + return; > + } else { > + warn_report_err(err); > + } > } > } > }