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 <cnana...@grnet.gr> > > --- > > 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.