Am 08.09.2011 17:24, schrieb Paolo Bonzini: > I find nbd quite useful to test migration, but it is limited: > it can only do synchronous operation, it is not safe because it > does not support flush, and it has no discard either. qemu-nbd > is also limited to 1MB requests, and the nbd block driver does > not take this into account. > > Luckily, flush/FUA support is being worked out by upstream, > and discard can also be added with the same framework (patches > 1 to 6). > > Asynchronous support is also very similar to what sheepdog is > already doing (patches 7 to 12). > > Paolo Bonzini (12): > nbd: support feature negotiation > nbd: sync API definitions with upstream > nbd: support NBD_SET_FLAGS ioctl > nbd: add support for NBD_CMD_FLUSH > nbd: add support for NBD_CMD_FLAG_FUA > nbd: support NBD_CMD_TRIM in the server > sheepdog: add coroutine_fn markers > add socket_set_block > sheepdog: move coroutine send/recv function to generic code > block: add bdrv_co_flush support > nbd: switch to asynchronous operation > nbd: split requests > > block.c | 53 ++++++++++--- > block/nbd.c | 225 ++++++++++++++++++++++++++++++++++++++++++++-------- > block/sheepdog.c | 235 > +++++++----------------------------------------------- > block_int.h | 1 + > cutils.c | 108 +++++++++++++++++++++++++ > nbd.c | 80 +++++++++++++++++-- > nbd.h | 20 ++++- > oslib-posix.c | 7 ++ > oslib-win32.c | 6 ++ > qemu-common.h | 3 + > qemu-coroutine.c | 71 ++++++++++++++++ > qemu-coroutine.h | 26 ++++++ > qemu-nbd.c | 13 ++-- > qemu_socket.h | 1 + > 14 files changed, 580 insertions(+), 269 deletions(-)
There is anonther patch enabling AIO for NBD on the list [1], by Nicholas Thomas (CCed), that lacked review so far. Can you guys please review each others approach and then converge on a solution? I guess Paolo's patches 1-7 can be applied in any case, probably causing minor conflicts, but for the rest we need to decide which one to pick. Kevin [1] http://www.mail-archive.com/qemu-devel@nongnu.org/msg74711.html