[Libguestfs] [nbdkit PATCH] server: s/handle/cookie/ to match NBD spec

Laszlo Ersek lersek at redhat.com
Tue May 30 11:18:46 UTC 2023


On 5/29/23 18:24, Eric Blake wrote:
> Externally, libnbd has been exposing the 64-bit opaque marker for each
> NBD packet as the "cookie", because it was less confusing when
> contrasted with 'struct nbd_handle *' holding all libnbd state.  It
> also avoids confusion between the noun 'handle' as a way to identify a
> packet and the verb 'handle' for reacting to things like signals.
> Upstream NBD changed their spec to favor the name "cookie" based on
> our recommendations[1], and so now we can get rid of our last uses of
> the old name, keeping nbd-protocol.h in sync with libnbd.
> 
> [1] https://github.com/NetworkBlockDevice/nbd/commit/ca4392eb2b
> 
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>  common/protocol/nbd-protocol.h |  6 +++---
>  server/protocol.c              | 24 ++++++++++++------------
>  2 files changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/common/protocol/nbd-protocol.h b/common/protocol/nbd-protocol.h
> index 0217891e..50275dcd 100644
> --- a/common/protocol/nbd-protocol.h
> +++ b/common/protocol/nbd-protocol.h
> @@ -193,7 +193,7 @@ struct nbd_request {
>    uint32_t magic;               /* NBD_REQUEST_MAGIC. */
>    uint16_t flags;               /* Request flags. */
>    uint16_t type;                /* Request type. */
> -  uint64_t handle;              /* Opaque handle. */
> +  uint64_t cookie;              /* Opaque handle. */
>    uint64_t offset;              /* Request offset. */
>    uint32_t count;               /* Request length. */
>  } NBD_ATTRIBUTE_PACKED;
> @@ -202,7 +202,7 @@ struct nbd_request {
>  struct nbd_simple_reply {
>    uint32_t magic;               /* NBD_SIMPLE_REPLY_MAGIC. */
>    uint32_t error;               /* NBD_SUCCESS or one of NBD_E*. */
> -  uint64_t handle;              /* Opaque handle. */
> +  uint64_t cookie;              /* Opaque handle. */
>  } NBD_ATTRIBUTE_PACKED;
> 
>  /* Structured reply (server -> client). */
> @@ -210,7 +210,7 @@ struct nbd_structured_reply {
>    uint32_t magic;               /* NBD_STRUCTURED_REPLY_MAGIC. */
>    uint16_t flags;               /* NBD_REPLY_FLAG_* */
>    uint16_t type;                /* NBD_REPLY_TYPE_* */
> -  uint64_t handle;              /* Opaque handle. */
> +  uint64_t cookie;              /* Opaque handle. */
>    uint32_t length;              /* Length of payload which follows. */
>  } NBD_ATTRIBUTE_PACKED;
> 
> diff --git a/server/protocol.c b/server/protocol.c
> index d9a5e282..cb530e65 100644
> --- a/server/protocol.c
> +++ b/server/protocol.c
> @@ -363,7 +363,7 @@ nbd_errno (int error, uint16_t flags)
>  }
> 
>  static bool
> -send_simple_reply (uint64_t handle, uint16_t cmd, uint16_t flags,
> +send_simple_reply (uint64_t cookie, uint16_t cmd, uint16_t flags,
>                     const char *buf, uint32_t count,
>                     uint32_t error)
>  {
> @@ -374,7 +374,7 @@ send_simple_reply (uint64_t handle, uint16_t cmd, uint16_t flags,
>    int f = (cmd == NBD_CMD_READ && !error) ? SEND_MORE : 0;
> 
>    reply.magic = htobe32 (NBD_SIMPLE_REPLY_MAGIC);
> -  reply.handle = handle;
> +  reply.cookie = cookie;
>    reply.error = htobe32 (nbd_errno (error, flags));
> 
>    r = conn->send (&reply, sizeof reply, f);
> @@ -395,7 +395,7 @@ send_simple_reply (uint64_t handle, uint16_t cmd, uint16_t flags,
>  }
> 
>  static bool
> -send_structured_reply_read (uint64_t handle, uint16_t cmd,
> +send_structured_reply_read (uint64_t cookie, uint16_t cmd,
>                              const char *buf, uint32_t count, uint64_t offset)
>  {
>    GET_CONN;
> @@ -412,7 +412,7 @@ send_structured_reply_read (uint64_t handle, uint16_t cmd,
>    assert (cmd == NBD_CMD_READ);
> 
>    reply.magic = htobe32 (NBD_STRUCTURED_REPLY_MAGIC);
> -  reply.handle = handle;
> +  reply.cookie = cookie;
>    reply.flags = htobe16 (NBD_REPLY_FLAG_DONE);
>    reply.type = htobe16 (NBD_REPLY_TYPE_OFFSET_DATA);
>    reply.length = htobe32 (count + sizeof offset_data);
> @@ -522,7 +522,7 @@ extents_to_block_descriptors (struct nbdkit_extents *extents,
>  }
> 
>  static bool
> -send_structured_reply_block_status (uint64_t handle,
> +send_structured_reply_block_status (uint64_t cookie,
>                                      uint16_t cmd, uint16_t flags,
>                                      uint32_t count, uint64_t offset,
>                                      struct nbdkit_extents *extents)
> @@ -545,7 +545,7 @@ send_structured_reply_block_status (uint64_t handle,
>      return connection_set_status (STATUS_DEAD);
> 
>    reply.magic = htobe32 (NBD_STRUCTURED_REPLY_MAGIC);
> -  reply.handle = handle;
> +  reply.cookie = cookie;
>    reply.flags = htobe16 (NBD_REPLY_FLAG_DONE);
>    reply.type = htobe16 (NBD_REPLY_TYPE_BLOCK_STATUS);
>    reply.length = htobe32 (sizeof context_id +
> @@ -578,7 +578,7 @@ send_structured_reply_block_status (uint64_t handle,
>  }
> 
>  static bool
> -send_structured_reply_error (uint64_t handle, uint16_t cmd, uint16_t flags,
> +send_structured_reply_error (uint64_t cookie, uint16_t cmd, uint16_t flags,
>                               uint32_t error)
>  {
>    GET_CONN;
> @@ -588,7 +588,7 @@ send_structured_reply_error (uint64_t handle, uint16_t cmd, uint16_t flags,
>    int r;
> 
>    reply.magic = htobe32 (NBD_STRUCTURED_REPLY_MAGIC);
> -  reply.handle = handle;
> +  reply.cookie = cookie;
>    reply.flags = htobe16 (NBD_REPLY_FLAG_DONE);
>    reply.type = htobe16 (NBD_REPLY_TYPE_ERROR);
>    reply.length = htobe32 (0 /* no human readable error */ + sizeof error_data);
> @@ -740,16 +740,16 @@ protocol_recv_request_send_reply (void)
>     */
>    if (!conn->structured_replies ||
>        (cmd != NBD_CMD_READ && cmd != NBD_CMD_BLOCK_STATUS))
> -    return send_simple_reply (request.handle, cmd, flags, buf, count, error);
> +    return send_simple_reply (request.cookie, cmd, flags, buf, count, error);
> 
>    if (error)
> -    return send_structured_reply_error (request.handle, cmd, flags, error);
> +    return send_structured_reply_error (request.cookie, cmd, flags, error);
> 
>    if (cmd == NBD_CMD_READ)
> -    return send_structured_reply_read (request.handle, cmd, buf, count,
> +    return send_structured_reply_read (request.cookie, cmd, buf, count,
>                                         offset);
> 
>    /* NBD_CMD_BLOCK_STATUS */
> -  return send_structured_reply_block_status (request.handle, cmd, flags,
> +  return send_structured_reply_block_status (request.cookie, cmd, flags,
>                                               count, offset, extents);
>  }

(I didn't dig into the larger contexts.)

Reviewed-by: Laszlo Ersek <lersek at redhat.com>



More information about the Libguestfs mailing list