[libvirt] [PATCH] events: Report errors on failure
Daniel P. Berrange
berrange at redhat.com
Thu Jan 14 12:33:47 UTC 2010
On Wed, Jan 13, 2010 at 03:50:02PM -0500, Cole Robinson wrote:
>
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
> po/POTFILES.in | 1 +
> src/conf/domain_event.c | 36 +++++++++++++++++++++++++++++-------
> 2 files changed, 30 insertions(+), 7 deletions(-)
>
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index 1ab0859..c9c78b6 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -4,6 +4,7 @@ daemon/remote.c
> daemon/stream.c
> src/conf/cpu_conf.c
> src/conf/domain_conf.c
> +src/conf/domain_event.c
> src/conf/interface_conf.c
> src/conf/network_conf.c
> src/conf/node_device_conf.c
> diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
> index 0fa2822..72f499c 100644
> --- a/src/conf/domain_event.c
> +++ b/src/conf/domain_event.c
> @@ -26,6 +26,13 @@
> #include "logging.h"
> #include "datatypes.h"
> #include "memory.h"
> +#include "virterror_internal.h"
> +
> +#define VIR_FROM_THIS VIR_FROM_NONE
> +
> +#define eventReportError(conn, code, fmt...) \
> + virReportErrorHelper(conn, VIR_FROM_THIS, code, __FILE__, \
> + __FUNCTION__, __LINE__, fmt)
>
>
> /**
> @@ -87,6 +94,9 @@ virDomainEventCallbackListRemove(virConnectPtr conn,
> return 0;
> }
> }
> +
> + eventReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> + _("could not find event callback for removal"));
> return -1;
> }
>
> @@ -140,6 +150,9 @@ int virDomainEventCallbackListMarkDelete(virConnectPtr conn,
> return 0;
> }
> }
> +
> + eventReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> + _("could not find event callback for deletion"));
> return -1;
> }
>
> @@ -199,13 +212,14 @@ virDomainEventCallbackListAdd(virConnectPtr conn,
> for (n=0; n < cbList->count; n++) {
> if(cbList->callbacks[n]->cb == callback &&
> conn == cbList->callbacks[n]->conn) {
> - DEBUG0("WARNING: Callback already tracked");
> + eventReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> + _("event callback already tracked"));
> return -1;
> }
> }
> /* Allocate new event */
> if (VIR_ALLOC(event) < 0) {
> - DEBUG0("Error allocating event");
> + virReportOOMError(conn);
> return -1;
> }
> event->conn = conn;
> @@ -216,7 +230,7 @@ virDomainEventCallbackListAdd(virConnectPtr conn,
> /* Make space on list */
> n = cbList->count;
> if (VIR_REALLOC_N(cbList->callbacks, n + 1) < 0) {
> - DEBUG0("Error reallocating list");
> + virReportOOMError(conn);
> VIR_FREE(event);
> return -1;
> }
> @@ -242,8 +256,10 @@ virDomainEventQueuePtr virDomainEventQueueNew(void)
> {
> virDomainEventQueuePtr ret;
>
> - if (VIR_ALLOC(ret) < 0)
> + if (VIR_ALLOC(ret) < 0) {
> + virReportOOMError(NULL);
> return NULL;
> + }
>
> return ret;
> }
> @@ -254,12 +270,15 @@ virDomainEventPtr virDomainEventNew(int id, const char *name,
> {
> virDomainEventPtr event;
>
> - if (VIR_ALLOC(event) < 0)
> + if (VIR_ALLOC(event) < 0) {
> + virReportOOMError(NULL);
> return NULL;
> + }
>
> event->type = type;
> event->detail = detail;
> if (!(event->name = strdup(name))) {
> + virReportOOMError(NULL);
> VIR_FREE(event);
> return NULL;
> }
> @@ -318,8 +337,11 @@ virDomainEventQueuePop(virDomainEventQueuePtr evtQueue)
> {
> virDomainEventPtr ret;
>
> - if(!evtQueue || evtQueue->count == 0 )
> + if (!evtQueue || evtQueue->count == 0 ) {
> + eventReportError(NULL, VIR_ERR_INTERNAL_ERROR, "%s",
> + _("event queue is empty, nothing to pop"));
> return NULL;
> + }
>
> ret = evtQueue->events[0];
>
> @@ -357,7 +379,7 @@ virDomainEventQueuePush(virDomainEventQueuePtr evtQueue,
> /* Make space on queue */
> if (VIR_REALLOC_N(evtQueue->events,
> evtQueue->count + 1) < 0) {
> - DEBUG0("Error reallocating queue");
> + virReportOOMError(NULL);
> return -1;
> }
>
> --
ACK
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list