From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aWJya-0007t1-HG for qemu-devel@nongnu.org; Thu, 18 Feb 2016 03:30:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aWJyX-0004hN-AW for qemu-devel@nongnu.org; Thu, 18 Feb 2016 03:30:16 -0500 Received: from mx2.parallels.com ([199.115.105.18]:36297) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aWJyX-0004hA-4p for qemu-devel@nongnu.org; Thu, 18 Feb 2016 03:30:13 -0500 References: <1455732653-3106-1-git-send-email-den@openvz.org> <56C4DF07.9020806@redhat.com> <56C54C90.1020509@openvz.org> From: "Denis V. Lunev" Message-ID: <56C58108.1030405@openvz.org> Date: Thu, 18 Feb 2016 11:30:00 +0300 MIME-Version: 1.0 In-Reply-To: <56C54C90.1020509@openvz.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC 1/1] nbd (specification): add NBD_CMD_WRITE_ZEROES command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: nbd-general@lists.sourceforge.net, qemu-devel@nongnu.org On 02/18/2016 07:46 AM, Denis V. Lunev wrote: > On 02/17/2016 11:58 PM, Eric Blake wrote: >> 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 >>> --- >>> 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. > from my point this allows client to apply his policy. For QCOW2 output > target the s/client/server/ Sorry, have mistyped.