Am 15.12.2011 11:21, schrieb Paolo Bonzini: > On 12/06/2011 04:27 PM, Paolo Bonzini wrote: >> Here is my NBD asynchronous operation series, including asynchronous >> server. >> >> Patches 1-5 add asynchronous operation to the client. >> >> Patches 6-9 add new features for flush/FUA and discard (trim). >> >> Patches 10-25 add asynchronous operation to the server. >> >> Chunyan Liu (1): >> Update ioctl order in nbd_init() to detect EBUSY >> >> Paolo Bonzini (24): >> add qemu_send_full and qemu_recv_full >> sheepdog: move coroutine send/recv function to generic code >> nbd: switch to asynchronous operation >> nbd: split requests >> nbd: allow multiple in-flight requests >> nbd: fix error handling in the server >> nbd: add support for NBD_CMD_FLAG_FUA >> nbd: add support for NBD_CMD_FLUSH >> nbd: add support for NBD_CMD_TRIM >> 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 | 5 +- >> Makefile.objs | 2 +- >> block/nbd.c | 319 ++++++++++++++++++++++++++++++------- >> block/sheepdog.c | 250 +++-------------------------- >> cutils.c | 111 +++++++++++++ >> main-loop.h | 6 + >> nbd.c | 439 >> ++++++++++++++++++++++++++++++++++++++++----------- >> nbd.h | 14 ++- >> os-posix.c | 42 ----- >> os-win32.c | 5 - >> osdep.c | 76 +++++++++ >> oslib-posix.c | 43 +++++ >> oslib-win32.c | 5 + >> qemu-common.h | 34 ++++ >> qemu-coroutine-io.c | 96 +++++++++++ >> qemu-nbd.c | 120 +++++--------- >> qemu-tool.c | 42 +++--- >> qemu_socket.h | 1 + >> 18 files changed, 1080 insertions(+), 530 deletions(-) >> create mode 100644 qemu-coroutine-io.c >> > > This needs rebasing due to commit 3a93113 (fix typo: delete redundant > semicolon, 2011-11-29). To avoid further spamming, I placed the whole > thing at git://github.com/bonzini/qemu.git in branch nbd-server.
I won't get to this (and virtio-scsi) before I go on vacation next week, and probably for some time after it. Feel free to send a pull request to Anthony when you think the series have received enough review and are tested well enough. Maybe Nick is interested in reviewing this series, CCed him. Kevin