qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC v2] nbd/proto: introduce extended request and 64bit commands


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [RFC v2] nbd/proto: introduce extended request and 64bit commands
Date: Wed, 18 Mar 2020 11:48:58 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

18.03.2020 11:04, Wouter Verhelst wrote:
On Wed, Mar 18, 2020 at 09:19:45AM +0300, Vladimir Sementsov-Ogievskiy wrote:
OK, understand. Reasonable thing, agreed. I'll resend.

Hmm. But we can't read in one go anyway, because we need to distinguish 
NBD_REQUEST_MAGIC
from NBD_EXTENDED_REQUEST_MAGIC..

Yes, that needs to happen at any rate, indeed. So the difference will be
two reads rather than three, instead of one read rather than two.

That's still an advantage.

I think, that modern client will use mostly NBD_EXTENDED_REQUEST_MAGIC 
interface, so it will
be great to optimize it. But to read extended request in one go, we should make 
it
shorter than simple request, and it doesn't seem possible.

May be we should not support simple and extended requests together? May be 
better to force
using only extended requests if they are negotiated? Then we will read extended 
request in
on go, and we may just define it like

C: 32 bits, 0x23876289, magic (`NBD_EXTENDED_REQUEST_MAGIC`)
C: 16 bits, flags
C: 16 bits, type
C: 64 bits, handle
C: 32 bits, length of payload (unsigned), MUST be greater or equal to 16
C: *length* bytes of payload data (if *length* is nonzero)

- so, we'll just read 36 bytes in one go, and then additional payload, if length
is more than 16.

That is, certainly, also an option, although I would define length of
payload to not include the offset and length bytes.


OK.

Eric, what do you think about this all?

--
Best regards,
Vladimir



reply via email to

[Prev in Thread] Current Thread [Next in Thread]