[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