From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1boWM4-0001YN-DA for qemu-devel@nongnu.org; Mon, 26 Sep 2016 09:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1boWLz-0000hT-2f for qemu-devel@nongnu.org; Mon, 26 Sep 2016 09:53:59 -0400 References: <1474893981-5302-1-git-send-email-vsementsov@virtuozzo.com> From: Vladimir Sementsov-Ogievskiy Message-ID: <57E9285F.2060604@virtuozzo.com> Date: Mon, 26 Sep 2016 16:53:35 +0300 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] proto: add 'shift' extension. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , qemu-devel@nongnu.org, qemu-block@nongnu.org, nbd-general@lists.sourceforge.net Cc: alex@alex.org.uk, eblake@redhat.com, kwolf@redhat.com, stefanha@redhat.com, w@uter.be, den@virtuozzo.com On 26.09.2016 15:51, Paolo Bonzini wrote: > > On 26/09/2016 14:46, Vladimir Sementsov-Ogievskiy wrote: >> This extension allows big requests for TRIM and WRITE_ZEROES through >> special 'shift' parameter, which means that offset and length should be >> shifted left by several bits. >> >> This is needed for efficient clearing large regions of the disk (up to >> the whole disk). >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy >> --- >> >> Here mentioned WRITE_ZEROES command which is only an experemental >> extension for now. >> >> To dicuss: >> NBD_OPT_SHIFT Data. It can be reduced to 8 bits actually... Are some >> reserved bits needed here? >> >> doc/proto.md | 19 ++++++++++++++++++- >> 1 file changed, 18 insertions(+), 1 deletion(-) >> >> diff --git a/doc/proto.md b/doc/proto.md >> index 2de3a6a..6fd1b16 100644 >> --- a/doc/proto.md >> +++ b/doc/proto.md >> @@ -682,6 +682,8 @@ The field has the following format: >> experimental `WRITE_ZEROES` [extension](https://github.com/yoe/nbd/blob/extension-write-zeroes/doc/proto.md). >> - bit 7, `NBD_FLAG_SEND_DF`: defined by the experimental `STRUCTURED_REPLY` >> [extension](https://github.com/yoe/nbd/blob/extension-structured-reply/doc/proto.md). >> +- bit 8, `NBD_FLAG_SEND_SHIFT` : exposes support for `NBD_CMD_FLAG_SHIFT` and >> + `NBD_OPT_SHIFT` >> >> Clients SHOULD ignore unknown flags. >> >> @@ -765,6 +767,15 @@ of the newstyle negotiation. >> >> Defined by the experimental `INFO` [extension](https://github.com/yoe/nbd/blob/extension-info/doc/proto.md). >> >> +- `NBD_OPT_SHIFT` (10) >> + >> + Defines shift used to calculate request offset and length if >> + `NBD_CMD_FLAG_SHIFT` is set. >> + >> + Data: >> + >> + - 32 bits, shift (unsigned); Must not be larger than 32. >> + >> #### Option reply types >> >> These values are used in the "reply type" field, sent by the server >> @@ -872,7 +883,13 @@ valid may depend on negotiation during the handshake phase. >> [extension](https://github.com/yoe/nbd/blob/extension-write-zeroes/doc/proto.md). >> - bit 2, `NBD_CMD_FLAG_DF`; defined by the experimental `STRUCTURED_REPLY` >> [extension](https://github.com/yoe/nbd/blob/extension-structured-reply/doc/proto.md). >> - >> +- bit 3, `NBD_CMD_FLAG_SHIFT`; This flag is valid for `NBD_CMD_TRIM` and >> + `NBD_CMD_WRITE_ZEROES`. If this flag is set the server shifts request >> + *length* and *offset* left by N bits, where N is defined by `NBD_OPT_SHIFT` >> + option or is assumed to be 16 bits by default if `NBD_OPT_SHIFT` option is >> + not specified. If after shift `(offset + length)` exceeds disk size, length >> + should be reduced to `( - offset)`. However, `(offset + length)` >> + must not exceed disk size by more than `(1 << N) - 1`. >> >> #### Request types >> >> > This is very ad hoc. Can we instead have a block size common to all > commands? Block devices in practice have one, in fact that's why > they're called block devices... > > Paolo Block size can be too small to clear the whole disk in one request (i.e. (2**31 * block_size) is too small..) . -- Best regards, Vladimir