Message ID | 20181130220344.3350618-1-eblake@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | nbd: add qemu-nbd --list | expand |
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? Rich.
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().
On Sat, Dec 01, 2018 at 07:57:51AM -0600, Eric Blake wrote: > 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(). Must have missed that option. It does work, thanks. Rich.