nbd: Implement NBD_CMD_WRITE_ZEROES on server
commit1f4d6d18edfeaea64ae74bf5254b8d0e923dc73f
authorEric Blake <eblake@redhat.com>
Fri, 14 Oct 2016 18:33:17 +0000 (14 13:33 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 2 Nov 2016 08:28:56 +0000 (2 09:28 +0100)
treea8cd9fbf92b2639ac0749a72a5702d0ecdb90d11
parentb6f5d3b573fe43da1f9fa07b7454e4492f409411
nbd: Implement NBD_CMD_WRITE_ZEROES on server

Upstream NBD protocol recently added the ability to efficiently
write zeroes without having to send the zeroes over the wire,
along with a flag to control whether the client wants to allow
a hole.

Note that when it comes to requiring full allocation, vs.
permitting optimizations, the NBD spec intentionally picked a
different sense for the flag; the rules in qemu are:
MAY_UNMAP == 0: must write zeroes
MAY_UNMAP == 1: may use holes if reads will see zeroes

while in NBD, the rules are:
FLAG_NO_HOLE == 1: must write zeroes
FLAG_NO_HOLE == 0: may use holes if reads will see zeroes

In all cases, the 'may use holes' scenario is optional (the
server need not use a hole, and must not use a hole if
subsequent reads would not see zeroes).

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1476469998-28592-16-git-send-email-eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
include/block/nbd.h
nbd/server.c