[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3] async: aio_context_new(): Handle event_notif
From: |
Benoît Canet |
Subject: |
Re: [Qemu-devel] [PATCH v3] async: aio_context_new(): Handle event_notifier_init failure |
Date: |
Tue, 16 Sep 2014 21:48:00 +0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
The Tuesday 16 Sep 2014 à 13:40:24 (-0600), Eric Blake wrote :
> On 09/16/2014 12:04 PM, Chrysostomos Nanakos wrote:
> > If event_notifier_init fails QEMU exits without printing
> > any error information to the user. This commit adds an error
> > message on failure:
> >
> > # qemu [...]
>
> Showing the actual command line you used would be helpful.
>
> > qemu: Failed to initialize event notifier: Too many open files in system
> >
> > Signed-off-by: Chrysostomos Nanakos <address@hidden>
> > ---
> > async.c | 16 +++++++++++-----
> > include/block/aio.h | 2 +-
> > include/qemu/main-loop.h | 2 +-
> > iothread.c | 11 ++++++++++-
> > main-loop.c | 9 +++++++--
> > qemu-img.c | 8 +++++++-
> > qemu-io.c | 7 ++++++-
> > qemu-nbd.c | 6 +++++-
> > tests/test-aio.c | 10 +++++++++-
> > tests/test-thread-pool.c | 10 +++++++++-
> > tests/test-throttle.c | 10 +++++++++-
> > vl.c | 5 +++--
> > 12 files changed, 78 insertions(+), 18 deletions(-)
> >
>
> > -AioContext *aio_context_new(void)
> > +AioContext *aio_context_new(Error **errp)
> > {
> > + int ret;
> > AioContext *ctx;
> > ctx = (AioContext *) g_source_new(&aio_source_funcs,
> > sizeof(AioContext));
> > + ret = event_notifier_init(&ctx->notifier, false);
> > + if (ret < 0) {
> > + g_source_destroy(&ctx->source);
>
> Does g_source_destroy() guarantee that errno is unmolested? If not,
>
> > + error_setg_errno(errp, -ret, "Failed to initialize event
> > notifier");
Actually -ret is passed to error_setg_errno.
See.
void error_set_errno(Error **errp, int os_errno, ErrorClass err_class,
const char *fmt, ...)
and
if (os_errno != 0) {
err->msg = g_strdup_printf("%s: %s", msg1, strerror(os_errno));
> Use of \' inside "" is unusual. (Multiple times in your patch)
My fault.