nbd/client: Initial support for extended headers
commit4fc55bf3b0608f15ce64d7b8cdaa95ac29e62d6c
authorEric Blake <eblake@redhat.com>
Mon, 25 Sep 2023 19:22:37 +0000 (25 14:22 -0500)
committerEric Blake <eblake@redhat.com>
Thu, 5 Oct 2023 16:02:08 +0000 (5 11:02 -0500)
treeb248179b61e3dabae075bdecf0f466cbad937f38
parented6c996c673e3d64be1f060abc3a6999e007dae2
nbd/client: Initial support for extended headers

Update the client code to be able to send an extended request, and
parse an extended header from the server.  Note that since we reject
any structured reply with a too-large payload, we can always normalize
a valid header back into the compact form, so that the caller need not
deal with two branches of a union.  Still, until a later patch lets
the client negotiate extended headers, the code added here should not
be reached.  Note that because of the different magic numbers, it is
just as easy to trace and then tolerate a non-compliant server sending
the wrong header reply as it would be to insist that the server is
compliant.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-ID: <20230925192229.3186470-21-eblake@redhat.com>
[eblake: fix trace format]
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
block/nbd.c
include/block/nbd.h
nbd/client.c
nbd/trace-events