From: Rich Felker Date: Tue, 11 Dec 2018 21:55:31 +0000 (-0500) Subject: on failed aio submission, set aiocb error and return value X-Git-Tag: v1.1.21~9 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c00cdefa1da17f60b3179704528582ef320e61b8;p=oweals%2Fmusl.git on failed aio submission, set aiocb error and return value it's not clear whether this is required, but it seems arguable that it should happen. for example aio_suspend is supposed to return immediately if any of the operations has "completed", which includes ending with an error status asynchonously and might also be interpreted to include doing so synchronously. --- diff --git a/src/aio/aio.c b/src/aio/aio.c index dae97cc6..6d34fa86 100644 --- a/src/aio/aio.c +++ b/src/aio/aio.c @@ -280,6 +280,8 @@ static int submit(struct aiocb *cb, int op) if (!q) { if (errno != EBADF) errno = EAGAIN; + cb->__ret = -1; + cb->__err = errno; return -1; } q->ref++; @@ -303,8 +305,8 @@ static int submit(struct aiocb *cb, int op) if (pthread_create(&td, &a, io_thread_func, &args)) { pthread_mutex_lock(&q->lock); __aio_unref_queue(q); - errno = EAGAIN; - ret = -1; + cb->__err = errno = EAGAIN; + cb->__ret = ret = -1; } pthread_sigmask(SIG_SETMASK, &origmask, 0);