This series adds asynchronous operation support for the NBD server. The first 9 patches are a general refactoring that can be applied now. The others require the "main loop in tools" series.
Most of the work is really in cleaning up the many parameters of nbd_trip, and implementing the abstractions needed to control multiple in-flight requests for the same client. Paolo Bonzini (15): qemu-nbd: remove offset argument to nbd_trip qemu-nbd: remove data_size argument to nbd_trip move corking functions to osdep.c qemu-nbd: simplify nbd_trip qemu-nbd: introduce nbd_do_send_reply qemu-nbd: more robust handling of invalid requests qemu-nbd: introduce nbd_do_receive_request qemu-nbd: introduce NBDExport qemu-nbd: introduce NBDRequest link the main loop and its dependencies into the tools qemu-nbd: use common main loop qemu-nbd: move client handling to nbd.c qemu-nbd: add client pointer to NBDRequest qemu-nbd: asynchronous operation qemu-nbd: throttle requests Makefile | 4 +- block/sheepdog.c | 20 +--- nbd.c | 386 ++++++++++++++++++++++++++++++++++++++++++------------ nbd.h | 13 ++- os-posix.c | 42 ------ os-win32.c | 5 - osdep.c | 9 ++ oslib-posix.c | 42 ++++++ oslib-win32.c | 5 + qemu-nbd.c | 113 +++++++---------- qemu-tool.c | 42 ++++--- qemu_socket.h | 1 + 12 files changed, 442 insertions(+), 240 deletions(-) -- 1.7.6