Re: [Libguestfs] [PATCH nbdkit] server: Deprecate the -e/--exportname parameter.

Eric Blake
2020-07-22T00:51:29Z

On 7/21/20 12:46 PM, Eric Blake wrote:

>> (2) The --run option no longer sets $exportname (to -e) nor puts the
>>      export name into the $uri.  However this was always the wrong
>>      thing to do since export names are per connection, not per server.
>>      Existing --run scripts will see $exportname expand to ""
which is
>>      most likely what they saw before and overwhelmingly more likely to
>>      be correct than if the -e option had been used.
>>

The more I think about it, the more I disagree with disabling this.  Or,
put another way, I think that the _only_ time -e makes sense is _when_
you are using --run.  Consider:

nbdkit -U - -e foo info --run 'nbdsh -u $uri -c "print(h.pread(3,
0))"'
nbdkit -U - -e bar info --run 'nbdsh -u $uri -c "print(h.pread(3,
0))"'

Of course, you can accomplish the same with:

nbdkit -U - info --run 'nbdsh -u nbd+unix:///foo\?socket=$unixsocket \
   -c "print(h.pread(3, 0))"'

but that's a lot more painful to write.

We _don't_ need to advertise 'foo' or 'bar' over
NBD_OPT_INFO (at least,
not for plugins that don't implement the forthcoming .export_list
callback), but _do_ need a way for the captive application (nbdsh in
this case) to know _which_ export the captive should connect to.

And, if we reinstate _just_ that usage of -e,...

>> (4) I have temporarily disabled tests/test-long-name.sh.  This is
>>      still a valid test, but we will have to rewrite it to use
>>      (probably) sh or eval plugins once we have an implementation of
>>      list_exports.
>> ---

...we may not have to disable this test after all.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org