From: Eric Blake <eblake@redhat.com>
To: Alex Bligh <alex@alex.org.uk>
Cc: "nbd-general@lists.sourceforge.net"
<nbd-general@lists.sourceforge.net>, Wouter Verhelst <w@uter.be>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Nbd] [PATCH 3/1] doc: Propose Structured Replies extension
Date: Tue, 29 Mar 2016 09:12:02 -0600 [thread overview]
Message-ID: <56FA9B42.2020503@redhat.com> (raw)
In-Reply-To: <88E5F63B-B036-45C7-B2FD-B555D54E88F4@alex.org.uk>
[-- Attachment #1: Type: text/plain, Size: 2976 bytes --]
On 03/29/2016 08:37 AM, Alex Bligh wrote:
> Eric,
>
>> I guess what I need to add is that in transmission phase, most commands
>> have exactly one response per request; but commands may document
>> scenarios where there will be multiple responses to a single request.
>> NBD_CMD_READ uses the multiple responses to make partial read and error
>> handling possible
>
> Yes, this.
>
>> Are you arguing that there should be a flag that controls whether reads
>> must be in-order vs. reassembled? Reassembly must happen either way,
>> the question is whether having a way to allow out-of-order for
>> efficiency, vs. defaulting to in-order for easier computation, is worth it.
>
> No, that sounds overengineered.
>
> More a way of guaranteeing avoiding a fragmentation on 'simple' reads.
> Perhaps a 'DF' bit (don't fragment)! If the server doesn't like it, it
> can always error the command.
Okay, that makes sense. Does reusing NBD_CMD_FLAG_FUA sound reasonable
for this purpose, or should it be a new flag? I guess from the
standpoint of client/server negotiation, we want to support this
don't-fragment request even if NBD_FLAG_SEND_FUA was not listed in
export flags, so it sounds like a new flag is best. Next, should it be
independently negotiated, or implied by negotiating
NBD_FLAG_C_STRUCTURED_REPLIES? I'm leaning towards implied - it's
all-or-none for use of the improved read structures. I'm also leaning
towards the name NBD_FLAG_C_STRUCTURED_READ, since elsewhere I'm
documenting that negotiating this particular global flag affects only
the replies to NBD_CMD_READ (other commands may use structured replies,
but those commands will be independently negotiated).
>>
>> Sure. But keep in mind that if (when?) we add a flag for allowing the
>> server to skip read chunks on holes, we'll have to tweak the wording to
>> allow the server to send fewer chunks than the client's length, where
>> the client must then assume zeroes for all chunks not received.
>
> Or alternatively a chunk representing a hole. I wonder whether you
> might be better to extend the chunk structure by 4 bytes to allow for
> future modifications like this (e.g. NBD_CHUNK_FLAG_HOLE means
> the chunk is full of zeroes and has no payload).
Seems reasonable (then I need to reword everything from len-8 to instead
be len-12 when dealing with data size within the len bytes of payload).
Network traffic-wise, I think it's better to always send the chunk
flags, than it would be to try and make the sending of the chunk flags
dependent on the client's choice of command flags (that is, we already
argued that wire format should never be changed based merely on command
flags, as it makes the server stream harder to decipher in isolation).
Thanks for the good feedback, by the way; it will make v2 better.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2016-03-29 15:12 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-28 13:59 [Qemu-devel] [PATCH] doc: Mention proper use of handle Eric Blake
2016-03-29 3:56 ` [Qemu-devel] [PATCH 2/1] doc: More details on flag negotiation Eric Blake
2016-03-29 3:56 ` [Qemu-devel] [PATCH 3/1] doc: Propose Structured Replies extension Eric Blake
2016-03-29 7:33 ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-03-29 8:24 ` Alex Bligh
2016-03-29 14:21 ` Eric Blake
2016-03-29 14:37 ` Alex Bligh
2016-03-29 15:12 ` Eric Blake [this message]
2016-03-29 16:37 ` Wouter Verhelst
2016-03-29 17:34 ` Alex Bligh
2016-03-29 17:45 ` Eric Blake
2016-03-29 18:03 ` Wouter Verhelst
2016-03-29 18:07 ` Eric Blake
2016-03-29 18:19 ` Wouter Verhelst
2016-03-29 18:25 ` Eric Blake
2016-03-29 18:09 ` Alex Bligh
2016-03-29 17:53 ` Wouter Verhelst
2016-03-29 18:23 ` Eric Blake
2016-03-29 18:51 ` Wouter Verhelst
2016-03-29 19:06 ` Wouter Verhelst
2016-03-29 19:39 ` Alex Bligh
2016-03-29 20:00 ` Eric Blake
2016-03-29 20:18 ` Alex Bligh
2016-03-29 20:44 ` Alex Bligh
2016-03-29 21:05 ` Wouter Verhelst
2016-03-29 22:05 ` Alex Bligh
2016-03-29 22:45 ` Wouter Verhelst
2016-03-29 22:53 ` Alex Bligh
2016-03-29 7:11 ` [Qemu-devel] [PATCH] doc: Mention proper use of handle Wouter Verhelst
2016-03-29 13:59 ` Eric Blake
2016-03-29 23:00 ` [Qemu-devel] [PATCH v2 0/3] NBD Structured Read Eric Blake
2016-03-29 23:00 ` [Qemu-devel] [PATCH v2 1/3] NBD proto: add "Command flags" section Eric Blake
2016-03-29 23:00 ` [Qemu-devel] [PATCH v2 2/3] doc: Mention proper use of handle Eric Blake
2016-03-29 23:01 ` [Qemu-devel] [PATCH v2 3/3] doc: Propose Structured Read extension Eric Blake
2016-03-29 23:29 ` Eric Blake
2016-03-30 6:50 ` Alex Bligh
2016-03-30 17:45 ` Eric Blake
2016-03-30 19:51 ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-03-30 20:54 ` Eric Blake
2016-03-30 21:26 ` Wouter Verhelst
2016-03-30 22:48 ` [Qemu-devel] " Alex Bligh
2016-03-30 20:44 ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-03-30 8:09 ` [Qemu-devel] [Nbd] [PATCH v2 0/3] NBD Structured Read Wouter Verhelst
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56FA9B42.2020503@redhat.com \
--to=eblake@redhat.com \
--cc=alex@alex.org.uk \
--cc=nbd-general@lists.sourceforge.net \
--cc=qemu-devel@nongnu.org \
--cc=w@uter.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).