On 12/1/18 1:42 AM, Richard W.M. Jones wrote:
On Fri, Nov 30, 2018 at 04:03:29PM -0600, Eric Blake wrote:
I note that upstream NBD has 'nbd-client -l $host' for querying
just export names (with no quoting, so you have to know that
a blank line means the default export), but it wasn't powerful
enough, so I implemented 'qemu-nbd -L' to document everything.
Upstream NBD has separate 'nbd-client' and 'nbd-server' binaries,
while we only have 'qemu-nbd' (which is normally just a server,
but 'qemu-nbd -c' also operates a second thread as a client).
Our other uses of qemu as NBD client are for consuming a block
device (as in qemu-io, qemu-img, or a drive to qemu) - but those
binaries are less suited to something so specific to the NBD
protocol.
I tried it against nbdkit and it works (obviously):
$ ./qemu-nbd -L
exports available: 1
export: ''
size: 67108864
flags: 0x61 ( trim zeroes )
What I couldn't work out is how to connect to other hosts. It's
possible to add -p or -k to change the localhost port number or to use
a Unix domain socket (and I checked both work). However can we
connect to remote hosts?
Should work by adding '-b host' (if -b is omitted, it defaults to
0.0.0.0). However, I admit that so far I have only tested '-b
localhost' or '-b 127.0.0.1' (per the iotest additions at the end of the
series), so it could well be something that I missed in setting up the
client socket in nbd_build_socket_address().
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org