Hi,
Older versions of nbd-client (up to 3.10) contain a bug wherein they
incorrectly merge two flag fields before passing them to the kernel. The
bug has existed for a long time, but originally nobody cared since the
one flag field had just one flag that happened to merge onto a flag
that's always set to one in the other flags field.
In nbd 3.9, however, I added a second flag which is always set by the
server, and which mapped onto the "read-only" flag in the other flags
field. The result is that whenever you try to connect nbd-client <= 3.9
to nbd-server >= 3.9, all exports will be marked as read-only. Since
Jessie has 3.8 and Stretch already had 3.13, this will make
interoperation between Jessie and Stretch problematic for nbd.
I would like to apply the following one-line patch to jessie to remedy
this situation:
diff --git a/nbd-client.c b/nbd-client.c
index cc9a06e..ddc849c 100644
--- a/nbd-client.c
+++ b/nbd-client.c
@@ -318,7 +318,7 @@ void negotiate(int sock, u64 *rsize64, u32 *flags, char* name, uint32_t needed_f
} else {
if(read(sock, &tmp, sizeof(tmp)) < 0)
err("Failed/4: %m\n");
- *flags |= (uint32_t)ntohs(tmp);
+ *flags = (uint32_t)ntohs(tmp);
}
if (read(sock, &buf, 124) < 0)
Does this seem like a reasonable thing to do for stable?
Note that this has no effect on Jessie-Jessie interaction (the other
flags field just doesn't contain any information that should be passed
to the kernel).
Thanks for your input,
--
< ron> I mean, the main *practical* problem with C++, is there's like a dozen
people in the world who think they really understand all of its rules,
and pretty much all of them are just lying to themselves too.
-- #debian-devel, OFTC, 2016-02-12
Attachment:
signature.asc
Description: PGP signature