Carl-Daniel Hailfinger
2016-Sep-26 16:00 UTC
[Libguestfs] [PATCH] nbdkit: flags are 32 bits for oldstyle connections
# HG changeset patch # User Carl-Daniel Hailfinger <Carl-Daniel.Hailfinger@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 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));
Richard W.M. Jones
2016-Oct-03 13:05 UTC
Re: [Libguestfs] [PATCH] nbdkit: flags are 32 bits for oldstyle connections
On Mon, Sep 26, 2016 at 06:00:15PM +0200, Carl-Daniel Hailfinger wrote:> # HG changeset patch > # User Carl-Daniel Hailfinger <Carl-Daniel.Hailfinger@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 connectionIs 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@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
Apparently Analagous Threads
- [PATCH nbdkit 3/4] common/protocol: Update nbd-protocol.h so it matches libnbd’s copy.
- [nbdkit PATCH 0/2] more protocol.h tweaks
- [PATCH] Add support for newstyle NBD protocol (RHBZ#1297100).
- [PATCH nbdkit 0/4] common/protocol: Unify public <nbd-protocol.h>
- [libnbd PATCH] lib: Synchronize nbd-protocol.h with nbdkit, again