kvm tools: Restart io_submit if it returns EAGAIN

Keep trying if io_submit returns EAGAIN. No need to fail the request.

Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Asias He
2012-06-04 23:10:05 +08:00
committed by Will Deacon
parent 354b198b3f
commit 0ecc970fb2
+13 -3
View File
@@ -322,23 +322,33 @@ int aio_pwritev(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec
off_t offset, int ev, void *param)
{
struct iocb *ios[1] = { iocb };
int ret;
io_prep_pwritev(iocb, fd, iov, iovcnt, offset);
io_set_eventfd(iocb, ev);
iocb->data = param;
return io_submit(ctx, 1, ios);
restart:
ret = io_submit(ctx, 1, ios);
if (ret == -EAGAIN)
goto restart;
return ret;
}
int aio_preadv(io_context_t ctx, struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt,
off_t offset, int ev, void *param)
{
struct iocb *ios[1] = { iocb };
int ret;
io_prep_preadv(iocb, fd, iov, iovcnt, offset);
io_set_eventfd(iocb, ev);
iocb->data = param;
return io_submit(ctx, 1, ios);
restart:
ret = io_submit(ctx, 1, ios);
if (ret == -EAGAIN)
goto restart;
return ret;
}
#endif
#endif