mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-06-16 02:15:47 +00:00
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:
+13
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user