On 5/20/19 4:20 AM, Richard W.M. Jones wrote: > > Previous discussion: > https://lists.debian.org/nbd/2018/07/msg00002.html > > Again I'm stuck because we need a URL syntax for NBD. > > Various URLs have been proposed before: > > * Library Hostname+port over TCP/IP > Unix domain socket > Export name > - Link for further information > - Notes > > * libguestfs nbd://example.com:port (:port is optional) > nbd://?socket=/socket > nbd://example.com:port/exportname > nbd:///exportname?socket=/socket > - http://libguestfs.org/guestfish.1.html#a-nbd:-example.com-:port > - Cannot specify an export name without a leading '/' character > > * QEMU nbd:example.com:port > nbd:unix:/socket > nbd:example.com:port:exportname=/export > - https://qemu.weilnetz.de/doc/qemu-doc.html#Device-URL-Syntax > - Not a real URL! Qemu also supports actual URLs: nbd[+tcp]://example.com[:port]/[exportname] nbd+unix:///[exportname]?socket=path where the [...] blocks are optional (missing exportname requests the default '' export, missing port defaults to 10809) > > * Curl nbd://example.com/ > nbd://example.com/exportname > - https://github.com/rwmjones/curl/commit/2aba3dd7d8f9b8e03a8c3435e7555ab9e195675a#diff-77ab3188c0ad08b7b9d8d9787c8e9d75 > - Cannot specify an export name without a leading '/' character > - No Unix domain socket syntax was ever defined. > - Did not go upstream. > > The leading problem with the "obvious" NBD URL format seems to be that > it's impossible to specify empty export names or export names which > don't start with a '/' character. The qemu format allows empty export names. 'nbd://hostname' and 'nbd://hostname/' are the same empty export, 'nbd://hostname//' is the export named '/'. > > This is why I'd be inclined to use an extra URL parameter instead, > like: > > nbd://example.com[:port]/?export=exportname > > and for Unix domain sockets: > > nbd:///?export=exportname&socket=/socket The qemu solution was to use the 'nbd+unix://' protocol rather than the bare 'nbd://' protocol to tell the difference between tcp and Unix sockets, rather than trying to figure out from the rest of the URL which context was implied. > > The export would be optional, defaulting to empty string. IPv6 > addresses would work in the obvious way for URLs, using "[...]" > around the address part (ie as in RFC 2732). All escaping issues > would work as for standard URLs. > > I think we should standardize this once and for all in a document in > the NBD repository. > > Anyway let me know what you think and I will try to write something > formal. > > Rich. > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature