Hi all! Here is NBD reconnect. Previously, if connection failed all current and future requests will fail. After the series, nbd-client driver will try to reconnect unlimited times. During first @reconnect-delay seconds of reconnecting all requests will wait for the connection, and if it is established requests will be resent. After @reconnect-delay period all requests will be failed (until successful reconnect).
v10: 01: add Eric's r-b 02: drop dead assignment local_err = NULL s/nbd_reconnect_loop/nbd_co_reconnect_loop/ 03: avoid race conditions + some improvements - introduce qemu_io_silent_check and use it to wait for NBD server start - use size variable instead of '5M' in all places - use smart waiting loop instead of sleep, to wait for job progress - do srv.wait() after srv.kill(), to be sure that server is stopped - drop throttling earlier - drop 'quick' tag in group file Vladimir Sementsov-Ogievskiy (3): qemu-coroutine-sleep: introduce qemu_co_sleep_wake block/nbd: nbd reconnect iotests: test nbd reconnect include/qemu/coroutine.h | 23 ++- block/nbd.c | 331 +++++++++++++++++++++++++++------- util/qemu-coroutine-sleep.c | 51 ++++-- tests/qemu-iotests/264 | 95 ++++++++++ tests/qemu-iotests/264.out | 13 ++ tests/qemu-iotests/group | 1 + tests/qemu-iotests/iotests.py | 11 ++ 7 files changed, 447 insertions(+), 78 deletions(-) create mode 100755 tests/qemu-iotests/264 create mode 100644 tests/qemu-iotests/264.out -- 2.21.0