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

Re: [PATCH] proto: add xNBD command NBD_CMD_CACHE to the spec



So, I haven't replied to this yet because I would like some feedback
from Takahiro first, but so far that hasn't been forthcoming.

Takahiro-san, care to comment? The virtuozzo people would like to
implement something of which I think the requirements are very similar
to your NBD_CMD_CACHE command, and are therefore proposing to add the
specification of your extra command to the NBD protocol spec; however, I
don't want to approve that unless you've reviewed it, since I don't
really know all the ins and outs of what you've implemented, and I would
hate to add something to the spec based on what you do but slightly
incompatible with it because I missed something -- that would suck.

Thanks for your feedback,

On Mon, Mar 26, 2018 at 07:10:49PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> 
> Hi all.
> 
> The actual usage case, as already described in mailing list:
> 
> some kind of VM restore from backup:
> 
>     +---------- VM --------------+
>     |                            |
>     | guest                      |
>     |  |                         |
>     | local disk -- (NBD server)<----CACHE-------+(third party NBD client)
>     |  |                         |
>     | (NBD client*)<----------------(data)-------+(NBD server) -- [VM backup]
>     |                            |
>     +----------------------------+
> 
>     - copy-on-read is set up between "local disk" and "NBD client*"
>     - when guest read block and there is no corresponding block in the local
>       disk it is read from the NBD client*, and saved in the local disk
>     - when guest writes something, it is written into the local disk
>     - on CMD_CACHE, if there is no corresponding block in local disk, it is
>       read from NBD client and saved in the local disk
>     - on CMD_CACHE, if there is corresponding block in local disk - do nothing 
> 
> 
>  doc/proto.md | 18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/doc/proto.md b/doc/proto.md
> index c7803e0..73ce5de 100644
> --- a/doc/proto.md
> +++ b/doc/proto.md
> @@ -897,6 +897,7 @@ The field has the following format:
>    the export.
>  - bit 9, `NBD_FLAG_SEND_RESIZE`: defined by the experimental `RESIZE`
>    [extension](https://github.com/NetworkBlockDevice/nbd/blob/extension-resize/doc/proto.md).
> +- bit 10, `NBD_FLAG_SEND_CACHE`: exposes support for `NBD_CMD_CACHE`.
>  
>  Clients SHOULD ignore unknown flags.
>  
> @@ -1632,6 +1633,20 @@ The following request types exist:
>      A client MUST NOT send a trim request unless `NBD_FLAG_SEND_TRIM`
>      was set in the transmission flags field.
>  
> +* `NBD_CMD_CACHE` (5)
> +
> +    Cache request. Implies server to perform some action to speed-up
> +    further read requests to the area specified by *offset* and
> +    *length*. However, performance gain is not guaranteed and depends on
> +    server implementation.
> +
> +    If an error occurs, the server MUST set the appropriate error code
> +    in the error field. However failure on this operation doesn't mean
> +    that further read requests on this area will fail.
> +
> +    A client MUST NOT send a cache request unless `NBD_FLAG_SEND_CACHE`
> +    was set in the transmission flags field.
> +
>  * `NBD_CMD_WRITE_ZEROES` (6)
>  
>      A write request with no payload. *Offset* and *length* define the
> @@ -1679,9 +1694,6 @@ The following request types exist:
>      maintainer of this document, so that these messages can be listed here
>      to avoid conflicting implementations.
>  
> -    Currently one such message is known: `NBD_CMD_CACHE`, with type set to
> -    5, implemented by xnbd.
> -
>  #### Error values
>  
>  The error values are used for the error field in the reply message.
> -- 
> 2.11.1
> 
> 

-- 
Could you people please use IRC like normal people?!?

  -- Amaya Rodrigo Sastre, trying to quiet down the buzz in the DebConf 2008
     Hacklab


Reply to: