The upstream NBD protocol is proposing an extension for efficient write zeroes; having a qemu implementation will be one of the reasons to promote the proposal from experimental to standard: https://github.com/yoe/nbd/blob/extension-write-zeroes/doc/proto.md
v4 was here: https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg07463.html Prerequisites: v3 Auto-fragment large transactions at the block layer: https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg03550.html v2 byte-based block discard: https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg03592.html Also available as a tag at: git fetch git://repo.or.cz/qemu/ericb.git nbd-zero-v5 changes since v4: - patch 2 - Rebase to latest - patch 6, 10 - Address review comments [Paolo] - patch 14 - Update commit message to address review comments [Paolo] 001/14:[----] [--] 'nbd: Fix bad flag detection on server' 002/14:[0004] [FC] 'nbd: Add qemu-nbd -D for human-readable description' 003/14:[----] [--] 'nbd: Limit nbdflags to 16 bits' 004/14:[----] [--] 'nbd: Treat flags vs. command type as separate fields' 005/14:[----] [--] 'nbd: Share common reply-sending code in server' 006/14:[0010] [FC] 'nbd: Send message along with server NBD_REP_ERR errors' 007/14:[----] [--] 'nbd: Share common option-sending code in client' 008/14:[----] [--] 'nbd: Let server know when client gives up negotiation' 009/14:[----] [--] 'nbd: Let client skip portions of server reply' 010/14:[0059] [FC] 'nbd: Less allocation during NBD_OPT_LIST' 011/14:[----] [--] 'nbd: Support shorter handshake' 012/14:[----] [--] 'nbd: Improve server handling of shutdown requests' 013/14:[----] [--] 'nbd: Implement NBD_CMD_WRITE_ZEROES on server' 014/14:[----] [--] 'nbd: Implement NBD_CMD_WRITE_ZEROES on client' Eric Blake (14): nbd: Fix bad flag detection on server nbd: Add qemu-nbd -D for human-readable description nbd: Limit nbdflags to 16 bits nbd: Treat flags vs. command type as separate fields nbd: Share common reply-sending code in server nbd: Send message along with server NBD_REP_ERR errors nbd: Share common option-sending code in client nbd: Let server know when client gives up negotiation nbd: Let client skip portions of server reply nbd: Less allocation during NBD_OPT_LIST nbd: Support shorter handshake nbd: Improve server handling of shutdown requests nbd: Implement NBD_CMD_WRITE_ZEROES on server nbd: Implement NBD_CMD_WRITE_ZEROES on client block/nbd-client.h | 4 +- include/block/nbd.h | 69 ++++++-- nbd/nbd-internal.h | 12 +- block/nbd-client.c | 44 ++++- block/nbd.c | 4 + nbd/client.c | 501 +++++++++++++++++++++++++++------------------------- nbd/server.c | 271 +++++++++++++++++++--------- qemu-nbd.c | 16 +- qemu-nbd.texi | 5 +- 9 files changed, 576 insertions(+), 350 deletions(-) -- 2.5.5