提交 44713c9e 编写于 作者: K Kevin Wolf 提交者: Stefan Hajnoczi

linux-aio: Handle io_submit() failure gracefully

It is generally not expected that io_submit() fails other than with
-EAGAIN, but corner cases like SELinux refusing I/O when permissions are
revoked are still possible. In this case, we shouldn't abort, but just
return an I/O error for the request.
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
Message-id: 1470741619-23231-1-git-send-email-kwolf@redhat.com
Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
上级 d08306dc
...@@ -221,7 +221,13 @@ static void ioq_submit(LinuxAioState *s) ...@@ -221,7 +221,13 @@ static void ioq_submit(LinuxAioState *s)
break; break;
} }
if (ret < 0) { if (ret < 0) {
abort(); /* Fail the first request, retry the rest */
aiocb = QSIMPLEQ_FIRST(&s->io_q.pending);
QSIMPLEQ_REMOVE_HEAD(&s->io_q.pending, next);
s->io_q.in_queue--;
aiocb->ret = ret;
qemu_laio_process_completion(aiocb);
continue;
} }
s->io_q.in_flight += ret; s->io_q.in_flight += ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册