[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/2] qom: detect attempts to add a property that
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [PATCH 0/2] qom: detect attempts to add a property that already exists |
Date: |
Mon, 22 Oct 2012 13:35:20 -0200 |
On Fri, 19 Oct 2012 18:19:04 +0100
Peter Maydell <address@hidden> wrote:
> The aim of this patch series is to make QEMU exit with a helpful
> error message for bugs where multiple properties of the same name
> are accidentally added to a QOM object.
Does this happen only at build-time or can it happen at command-line
too? What about QMP/HMP?
> In order to achieve this
> for static properties whilst still allowing the hotplug case
> to gracefully fail without killing QEMU, we add the concept
> of a 'critical' error. A critical error is one which must be
> handled somehow -- if we encounter a NULL Error** either when
> the error is raised or later when it is propagated, we will
> abort() rather than throwing the error away.
This gives me the impression that we're fixing it in the wrong layer.
Besides, all code calling error_propagate() today can now abort
(at least in theory), but that's something we really don't want to happen
in QMP.
An alternative would be to let users set is_critical, but add a
error_is_critical() function and let the code that wants to abort
to check for it.
But, how difficult it's to add a flag to QPM objects to allow/disallow
multiple properties?
>
> (This is a bit different from the idea we initially discussed on
> IRC, which was to have an error_propagate_or_abort() function,
> but that approach would mean that the error would get thrown
> away by intermediate functions such as qdev_property_add_static()
> unless all those functions were changed too. I think this way
> is more reliable.)
>
> Peter Maydell (2):
> error: Distinguish critical and non-critical errors
> qom: Detect attempts to add a property that already exists
>
> error.c | 38 ++++++++++++++++++++++++++++++++++----
> error.h | 12 ++++++++++++
> qom/object.c | 13 ++++++++++++-
> 3 files changed, 58 insertions(+), 5 deletions(-)
>