Hi Richard,
no, I have only tested against nbd-{client,server} and the Linux kernel implementation. Compatibility simply hasn't been a huge priority for me :)
Personally, it seems more efficient to me to have one reference implementation and testsuite to run against new implementations, than to require each new implementation to build a new testsuite for each existing one. For example, I don't know nbdkit at all and know very little about qemu. The thought of having to figure out how to run a client/server of each and actually observe the outcomes of a testsuite seems… dreadful. Whereas if you'd give me a binary that I can just point at my server and it gives me a list of protocol-violations, I'd be fine to fix them all.
On Tue, Nov 20, 2018 at 01:12:59AM +0100, Axel Wagner wrote:
> Hey,
>
> I thought this might be interesting to y'all: I implemented both client and
> server of the NBD protocol in Go. The intention is to use it for testing
> applications' durability guarantees via failure-injection. As such, the
> implementation is not necessarily complete.
> You can find the repository here: https://github.com/Merovius/nbd
Have you tried interoperability with qemu (client), qemu-nbd (server),
and nbdkit (server)?
I think more generally we should have some guidelines for testing
interop, such as a list of existing clients and servers that authors
should consider testing against.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org