For the NBD server to work with dataplane, it needs to correctly access the exported BDS. It makes the most sense to run both in the same AioContext, therefore this series implements methods for tracking a BDS's AioContext and makes NBD make use of this for keeping the clients connected to that BDS in the same AioContext.
This series breaks compilation of NBD on Windows, because aio_set_fd_handler() is not available there yet. It should therefore not be merged until that function is available (which will probably not happen before qemu 2.2). v3: - Patch 1: Drop aio_notify(), because aio_set_fd_handler() will call it anyway [Stefan] v2: - Patch 1: Drop NBDClient::restart_write; checking whether NBDClient::send_coroutine is not NULL suffices [Paolo] git-backport-diff against v2: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/3:[0006] [FC] 'nbd: Drop nbd_can_read()' 002/3:[----] [--] 'block: Add AIO context notifiers' 003/3:[----] [--] 'nbd: Follow the BDS' AIO context' Max Reitz (3): nbd: Drop nbd_can_read() block: Add AIO context notifiers nbd: Follow the BDS' AIO context block.c | 56 +++++++++++++++++++++++++ include/block/block_int.h | 41 ++++++++++++++++++ nbd.c | 103 +++++++++++++++++++++++++++++++++++++--------- 3 files changed, 181 insertions(+), 19 deletions(-) -- 2.0.0