[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/2] sheepdog: put aio request into failed list when
From: |
Liu Yuan |
Subject: |
[Qemu-devel] [PATCH 2/2] sheepdog: put aio request into failed list when failing to send request |
Date: |
Thu, 25 Jul 2013 13:25:35 +0800 |
qemu_co_send() in the add_aio_request might fail if connection is closed. In
this case we should it requests into failed list to be resended later when
connection is repaired.
Signed-off-by: Liu Yuan <address@hidden>
---
block/sheepdog.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 8c6c8f1..5bf78d0 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -1174,14 +1174,18 @@ static void coroutine_fn
add_aio_request(BDRVSheepdogState *s, AIOReq *aio_req,
/* send a header */
ret = qemu_co_send(s->fd, &hdr, sizeof(hdr));
if (ret < (int)sizeof(hdr)) {
- error_report("failed to send a req, %s", strerror(errno));
+ dprintf("failed to send a req, %s", strerror(errno));
+ QLIST_REMOVE(aio_req, aio_siblings);
+ QLIST_INSERT_HEAD(&s->pending_aio_head, aio_req, aio_siblings);
goto out;
}
if (wlen) {
ret = qemu_co_sendv(s->fd, iov, niov, aio_req->iov_offset, wlen);
if (ret < wlen) {
- error_report("failed to send a data, %s", strerror(errno));
+ dprintf("failed to send a data, %s", strerror(errno));
+ QLIST_REMOVE(aio_req, aio_siblings);
+ QLIST_INSERT_HEAD(&s->pending_aio_head, aio_req, aio_siblings);
}
}
out:
--
1.7.9.5
- [Qemu-devel] [PATCH v2 5/9] sheepdog: reload inode outside of resend_aioreq, (continued)
- [Qemu-devel] [PATCH v2 5/9] sheepdog: reload inode outside of resend_aioreq, MORITA Kazutaka, 2013/07/24
- [Qemu-devel] [PATCH v2 6/9] coroutine: add co_aio_sleep_ns() to allow sleep in block drivers, MORITA Kazutaka, 2013/07/24
- [Qemu-devel] [PATCH v2 8/9] sheepdog: make add_aio_request and send_aioreq void functions, MORITA Kazutaka, 2013/07/24
- [Qemu-devel] [PATCH v2 9/9] sheepdog: cancel aio requests if possible, MORITA Kazutaka, 2013/07/24
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, Liu Yuan, 2013/07/24
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, MORITA Kazutaka, 2013/07/24
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, Liu Yuan, 2013/07/24
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, Liu Yuan, 2013/07/24
- Re: [Qemu-devel] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, Liu Yuan, 2013/07/25
- [Qemu-devel] [PATCH 1/2] sheepdog: correct signedness of comparison, Liu Yuan, 2013/07/25
- [Qemu-devel] [PATCH 2/2] sheepdog: put aio request into failed list when failing to send request,
Liu Yuan <=
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, MORITA Kazutaka, 2013/07/25
- Re: [Qemu-devel] [sheepdog] [PATCH v2 0/9] sheepdog: reconnect server after connection failure, Liu Yuan, 2013/07/25