Currently, if a sheepdog server exits, all the connecting VMs need to be restarted. This series implements a feature to reconnect the server, and enables us to do online sheepdog upgrade and avoid restarting VMs when sheepdog servers crash unexpectedly.
v4: - Added comment to explain why we need a failed queue. - Fixed a return value of sd_acb_cancelable(). v3: - Check return values of qemu_co_recv/send more strictly. - Move inflight requests to the failed list after reconnection completes. This is necessary to resend I/Os while connection is lost. - Check simultaneous create in resend_aioreq(). v2: - Dropped nonblocking connect patches. MORITA Kazutaka (10): ignore SIGPIPE in qemu-img and qemu-io iov: handle EOF in iov_send_recv sheepdog: check return values of qemu_co_recv/send correctly sheepdog: handle vdi objects in resend_aio_req sheepdog: reload inode outside of resend_aioreq coroutine: add co_aio_sleep_ns() to allow sleep in block drivers sheepdog: try to reconnect to sheepdog after network error sheepdog: make add_aio_request and send_aioreq void functions sheepdog: cancel aio requests if possible sheepdog: check simultaneous create in resend_aioreq block/sheepdog.c | 320 +++++++++++++++++++++++++++++----------------- include/block/coroutine.h | 8 ++ qemu-coroutine-sleep.c | 47 +++++++ qemu-img.c | 4 + qemu-io.c | 4 + util/iov.c | 6 + 6 files changed, 269 insertions(+), 120 deletions(-) -- 1.8.1.3.566.gaa39828