[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command |
Date: |
Wed, 17 Feb 2016 13:58:47 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 |
On 02/17/2016 11:10 AM, Denis V. Lunev wrote:
> This patch proposes a new command to reduce the amount of data passed
> through the wire when it is known that the data is all zeroes. This
> functionality is generally useful for mirroring or backup operations.
>
> Currently available NBD_CMD_TRIM command can not be used as the
> specification explicitely says that "a client MUST NOT make any
s/explicitely/explicitly/
> assumptions about the contents of the export affected by this
> [NBD_CMD_TRIM] command, until overwriting it again with `NBD_CMD_WRITE`"
>
> Particular use case could be the following:
>
> QEMU project uses own implementation of NBD server to transfer data
> in between different instances of QEMU. Typically we tranfer VM virtual
s/tranfer/transfer/
> disks over this channel. VM virtual disks are sparse and thus the
> efficiency of backup and mirroring operations could be improved a lot.
>
> Signed-off-by: Denis V. Lunev <address@hidden>
> ---
> doc/proto.md | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/doc/proto.md b/doc/proto.md
> index 43065b7..c94751a 100644
> --- a/doc/proto.md
> +++ b/doc/proto.md
> @@ -241,6 +241,8 @@ immediately after the global flags field in oldstyle
> negotiation:
> schedule I/O accesses as for a rotational medium
> - bit 5, `NBD_FLAG_SEND_TRIM`; should be set to 1 if the server supports
> `NBD_CMD_TRIM` commands
> +- bit 6, `NBD_FLAG_SEND_WRITE_ZEROES`; should be set to 1 if the server
> + supports `NBD_CMD_WRITE_ZEROES` commands
>
> ##### Client flags
>
> @@ -446,6 +448,11 @@ The following request types exist:
> about the contents of the export affected by this command, until
> overwriting it again with `NBD_CMD_WRITE`.
>
> +* `NBD_CMD_WRITE_ZEROES` (6)
> +
> + A request to write zeroes. The command is functional equivalent of
> + the NBD_WRITE_COMMAND but without payload sent through the channel.
This lets us push holes during writes. Do we have the converse
operation, that is, an easy way to query if a block of data will read as
all zeroes, and therefore the client can bypass reading that portion of
the disk (in other words, an equivalent to lseek(SEEK_HOLE/SEEK_DATA))?
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Denis V. Lunev, 2016/02/17
- Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command,
Eric Blake <=
- Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Denis V. Lunev, 2016/02/17
- Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Roman Kagan, 2016/02/18
- Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Denis V. Lunev, 2016/02/18
- Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Eric Blake, 2016/02/18
- [Qemu-devel] SUMMARY: Re: [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Denis V. Lunev, 2016/02/18
- Re: [Qemu-devel] SUMMARY: Re: [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Eric Blake, 2016/02/18
- Re: [Qemu-devel] [Nbd] SUMMARY: Re: [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Alex Bligh, 2016/02/18
- Re: [Qemu-devel] SUMMARY: Re: [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Denis V. Lunev, 2016/02/19
- Re: [Qemu-devel] SUMMARY: Re: [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command, Vladimir Sementsov-Ogievskiy, 2016/02/19