On 9/24/19 4:23 PM, Richard W.M. Jones wrote:
The cover letter was rather brief, let me try to explain this change some more ...
When we created libnbd, we needed the definitions of various NBD protocol things (like protocol message layouts, constants etc). We copied a header file from nbdkit which provided these. Over time this header file has diverged from nbdkit's copy.
In fact the libnbd one has been generally enhanced over the nbdkit version:
- All symbols in libnbd's copy are prefixed by NBD_ or nbd_.
- More coverage of the protocol.
It would be good, not just for nbdkit/libnbd but for other projects, if we could unify these two files again and publish a liberally licensed copy as /usr/include/nbd-protocol.h.
And nbdkit definitely has the more-permissive license, as the better location to stick it.
This commit series does this for nbdkit.
For libnbd there is an associated patch which just synchronizes the two files. I propose that we eventually change libnbd so that it uses the public (ie. nbdkit) version, but could fall back to an internal copy if the public version does not exist (so that libnbd doesn't need to depend on nbdkit).
It is a quasi-circular dependency: nbdkit depends on libnbd (if you build libnbd-nbd-plugin), and libnbd depends on nbdkit (if you want the latest header, rather than an in-tree fallback copied from an earlier point in time); and both projects like to use the other in their testsuites. But I think we are still at a point where either project can be bootstrapped first without the other being installed (test coverage may be smaller, and nbdkit-nbd-plugin may be omitted, but that doesn't stop the rest of either package from working). So the idea sounds fine to me. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org