[PATCH 2/2] kvm tools: Restart io_submit if it returns EAGAIN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

Signed-off-by: Asias He <asias.hejun@xxxxxxxxx>
---
 tools/kvm/util/read-write.c |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/tools/kvm/util/read-write.c b/tools/kvm/util/read-write.c
index 55473ba..44709df 100644
--- a/tools/kvm/util/read-write.c
+++ b/tools/kvm/util/read-write.c
@@ -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
\ No newline at end of file
+#endif
-- 
1.7.10.2

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux