qemu-irix/block
Eric Blake fa778fffdf nbd: Implement NBD_CMD_WRITE_ZEROES on client
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 a hole.

The generic block code takes care of falling back to the obvious
write of lots of zeroes if we return -ENOTSUP because the server
does not have WRITE_ZEROES.

Ideally, since NBD_CMD_WRITE_ZEROES does not involve any data
over the wire, we want to support transactions that are much
larger than the normal 32M limit imposed on NBD_CMD_WRITE.  But
the server may still have a limit smaller than UINT_MAX, so
until experimental NBD protocol additions for advertising various
command sizes is finalized (see [1], [2]), for now we just stick to
the same limits as normal writes.

[1] https://github.com/yoe/nbd/blob/extension-info/doc/proto.md
[2] https://sourceforge.net/p/nbd/mailman/message/35081223/

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1476469998-28592-17-git-send-email-eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-11-02 09:28:56 +01:00
..
Makefile.objs dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
accounting.c
archipelago.c
backup.c block: Use block_job_add_bdrv() in backup_start() 2016-10-31 16:52:38 +01:00
blkdebug.c
blkreplay.c
blkverify.c
block-backend.c block: introduce BDRV_POLL_WHILE 2016-10-28 21:50:18 +08:00
bochs.c
cloop.c
commit.c block: Block all nodes involved in the block-commit operation 2016-10-31 16:52:38 +01:00
crypto.c
curl.c
dirty-bitmap.c block: More operations for meta dirty bitmap 2016-10-24 17:56:07 +02:00
dmg-bz2.c dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
dmg.c dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
dmg.h dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
gluster.c
io.c block: Add bdrv_drain_all_{begin,end}() 2016-10-31 16:51:14 +01:00
iscsi.c block/iscsi: Adding new iSER transport layer option 2016-10-24 11:30:55 +02:00
linux-aio.c
mirror.c block: Block all intermediate nodes in commit_active_start() 2016-10-31 16:52:38 +01:00
nbd-client.c nbd: Implement NBD_CMD_WRITE_ZEROES on client 2016-11-02 09:28:56 +01:00
nbd-client.h nbd: Implement NBD_CMD_WRITE_ZEROES on client 2016-11-02 09:28:56 +01:00
nbd.c nbd: Implement NBD_CMD_WRITE_ZEROES on client 2016-11-02 09:28:56 +01:00
nfs.c block/nfs: Introduce runtime_opts in NFS 2016-10-31 16:52:39 +01:00
null.c
parallels.c
qapi.c qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2016-10-25 16:25:54 +02:00
qcow.c crypto: extend mode as a parameter in qcrypto_cipher_supports() 2016-10-19 10:09:24 +01:00
qcow2-cache.c
qcow2-cluster.c qcow2: Support BDRV_REQ_MAY_UNMAP 2016-10-24 17:54:03 +02:00
qcow2-refcount.c
qcow2-snapshot.c
qcow2.c qcow2: Support BDRV_REQ_MAY_UNMAP 2016-10-24 17:54:03 +02:00
qcow2.h qcow2: Support BDRV_REQ_MAY_UNMAP 2016-10-24 17:54:03 +02:00
qed-check.c
qed-cluster.c
qed-gencb.c
qed-l2-cache.c
qed-table.c block: introduce BDRV_POLL_WHILE 2016-10-28 21:50:18 +08:00
qed.c qed: Implement .bdrv_drain 2016-10-28 21:50:18 +08:00
qed.h
quorum.c quorum: do not allocate multiple iovecs for FIFO strategy 2016-10-24 17:56:06 +02:00
raw-posix.c raw-posix: Don't use bdrv_ioctl() 2016-10-27 19:05:23 +02:00
raw-win32.c block: improve error handling in raw_open 2016-10-24 17:54:03 +02:00
raw_bsd.c raw_bsd: add offset and size options 2016-10-31 16:52:39 +01:00
rbd.c rbd: shift byte count as a 64-bit value 2016-10-23 16:10:59 +02:00
replication.c block: prepare bdrv_reopen_multiple to release AioContext 2016-10-28 21:50:18 +08:00
sheepdog.c block: only call aio_poll on the current thread's AioContext 2016-10-28 21:50:18 +08:00
snapshot.c
ssh.c block/ssh: Use InetSocketAddress options 2016-10-31 16:49:13 +01:00
stream.c block: Support streaming to an intermediate layer 2016-10-31 16:52:38 +01:00
throttle-groups.c throttle: Correct access to wrong BlockBackendPublic structures 2016-10-24 17:54:03 +02:00
trace-events block: Remove bdrv_aio_pdiscard() 2016-10-27 19:05:22 +02:00
vdi.c
vhdx-endian.c
vhdx-log.c
vhdx.c
vhdx.h
vmdk.c
vpc.c
vvfat.c
win32-aio.c
write-threshold.c