On 20 Apr 2016, at 17:18, Wouter Verhelst <w...@uter.be> wrote: > Hi Eric, > > On Wed, Apr 20, 2016 at 09:42:02AM -0600, Eric Blake wrote: > [...] >> But in 3.9, the overlap bug was still present, and the set of global >> flags had grown to include NBD_FLAG_NO_ZEROS (commit 038e066), which >> overlaps with NBD_FLAG_READ_ONLY. Ouch. This means that a client >> talking to a server that advertises NO_ZEROES means that the client will >> mistakenly tell the kernel to treat EVERY export as read-only, even if >> the client doesn't respond with NBD_FLAG_C_NO_ZEROES. >> >> 3.10 fixed things; negotiate() now uses uint16_t *flags (instead of u32 >> *), and no longer tries to merge global flags with transmission flags; >> only the transmission flags are ever passed to the kernel via >> NBD_SET_FLAGS. Maybe it's good that there was only 2 weeks between 3.9 >> and 3.10, so hopefully few distros are trying to ship that broken version. > > Well, yeah, since 3.10 was an "oops" release when 3.9 exposed that bug > (which indeed had existed for a while) and which was reported quite > quickly on the list. Released versions of nbd which have the bug exist > though, and trying to have a 3.8 (or below) client talk to a 3.9 (or > above) server has the same issue. > > I decided that there was no way in which I could fix it, and that "the > export is readonly" is bad but not a "critical data loss" kind of bug, > so releasing 3.10 was pretty much the only sane thing I could do (other > than delaying NO_ZEROES, which might have worked too).
For what it's worth, Ubuntu 14.04 (still under long term support) ships with nbd-client 3.7 and I've just had a bug report filed against gonbdserver where all exports go readonly. https://github.com/abligh/gonbdserver/issues/4 I've added an option to disable NBD_FLAG_NO_ZEROS on nbd-server but that's pretty horrible. And I think this will affect all pre-3.10 clients talking to 3.9 and later servers. I'm going to find a minimal patch to nbd-client and offer that to Ubuntu / Debian. This message is here in part so I have something to point them at on the mailing list :-) -- Alex Bligh