[Libguestfs] [PATCH] nbdkit: flags are 32 bits for oldstyle connections
Richard W.M. Jones
rjones at redhat.com
Mon Oct 3 13:05:29 UTC 2016
On Mon, Sep 26, 2016 at 06:00:15PM +0200, Carl-Daniel Hailfinger wrote:
> # HG changeset patch
> # User Carl-Daniel Hailfinger <Carl-Daniel.Hailfinger at inf.h-brs.de>
> # Date 1474903734 -7200
> # Mon Sep 26 17:28:54 2016 +0200
> # Node ID dbd1ea0a401cedcfa426097a289d852971b14f1e
> # Parent d7d5078d08c711032837dcac79a4450226ec2ce5
> nbdkit: Fix flags in old-style connection
Is there some other patch that this depends on? It doesn't apply
to the current head.
Rich.
> diff -r d7d5078d08c7 -r dbd1ea0a401c src/connections.c
> --- a/src/connections.c Sun Sep 25 05:04:02 2016 +0200
> +++ b/src/connections.c Mon Sep 26 17:28:54 2016 +0200
> @@ -155,7 +155,7 @@
> struct old_handshake handshake;
> int64_t r;
> uint64_t exportsize;
> - uint16_t gflags, eflags;
> + uint32_t flags;
> int fl;
>
> r = plugin_get_size (conn);
> @@ -169,14 +169,13 @@
> exportsize = (uint64_t) r;
> conn->exportsize = exportsize;
>
> - gflags = 0;
> - eflags = NBD_FLAG_HAS_FLAGS;
> + flags = NBD_FLAG_HAS_FLAGS;
>
> fl = plugin_can_write (conn);
> if (fl == -1)
> return -1;
> if (readonly || !fl) {
> - eflags |= NBD_FLAG_READ_ONLY;
> + flags |= NBD_FLAG_READ_ONLY;
> conn->readonly = 1;
> }
>
> @@ -184,7 +183,7 @@
> if (fl == -1)
> return -1;
> if (fl) {
> - eflags |= NBD_FLAG_SEND_FLUSH | NBD_FLAG_SEND_FUA;
> + flags |= NBD_FLAG_SEND_FLUSH | NBD_FLAG_SEND_FUA;
> conn->can_flush = 1;
> }
>
> @@ -192,7 +191,7 @@
> if (fl == -1)
> return -1;
> if (fl) {
> - eflags |= NBD_FLAG_ROTATIONAL;
> + flags |= NBD_FLAG_ROTATIONAL;
> conn->is_rotational = 1;
> }
>
> @@ -200,7 +199,7 @@
> if (fl == -1)
> return -1;
> if (fl) {
> - eflags |= NBD_FLAG_SEND_TRIM;
> + flags |= NBD_FLAG_SEND_TRIM;
> conn->can_trim = 1;
> }
>
> @@ -208,19 +207,17 @@
> if (fl == -1)
> return -1;
> if (fl) {
> - eflags |= NBD_FLAG_SEND_MARKNOREMANENCE;
> + flags |= NBD_FLAG_SEND_MARKNOREMANENCE;
> conn->can_marknoremanence = 1;
> }
>
> - debug ("oldstyle negotiation: flags: global 0x%x export 0x%x",
> - gflags, eflags);
> + debug ("oldstyle negotiation: server flags: 0x%x", flags);
>
> memset (&handshake, 0, sizeof handshake);
> memcpy (handshake.nbdmagic, "NBDMAGIC", 8);
> handshake.version = htobe64 (OLD_VERSION);
> handshake.exportsize = htobe64 (exportsize);
> - handshake.gflags = htobe16 (gflags);
> - handshake.eflags = htobe16 (eflags);
> + handshake.flags = htobe32 (flags);
>
> if (xwrite (conn->sockout, &handshake, sizeof handshake) == -1) {
> nbdkit_error ("write: %m");
> diff -r d7d5078d08c7 -r dbd1ea0a401c src/protocol.h
> --- a/src/protocol.h Sun Sep 25 05:04:02 2016 +0200
> +++ b/src/protocol.h Mon Sep 26 17:28:54 2016 +0200
> @@ -41,8 +41,7 @@
> char nbdmagic[8]; /* "NBDMAGIC" */
> uint64_t version; /* OLD_VERSION, in network byte order */
> uint64_t exportsize; /* in network byte order */
> - uint16_t gflags; /* global flags, in network byte order */
> - uint16_t eflags; /* per-export flags, in network byte order */
> + uint32_t flags; /* flags, in network byte order */
> char zeroes[124]; /* must be sent as zero bytes */
> } __attribute__((packed));
>
>
> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
More information about the Libguestfs
mailing list