[Libguestfs] [nbdkit PATCH] captive: Support $uri in --run

Eric Blake eblake at redhat.com
Wed Jun 26 13:38:23 UTC 2019


On 6/26/19 3:56 AM, Richard W.M. Jones wrote:
> On Tue, Jun 25, 2019 at 09:35:11PM -0500, Eric Blake wrote:
>> The existing --run '$nbd' outputs an older form that differs between
>> libguestfs and qemu, and which is not always a valid URI.  For
>> historical compatibility, we probably can't change that; but we can
>> instead add a new '$uri' that outputs a valid URI.  Note that the
>> libguestfs '$nbd' TCP form is already a valid URI, but that libguestfs
>> still needs to be taught about the nbd+unix:// scheme, so for there,
>> you are still better off using '$nbd'; but for qemu, using '$uri'
>> already works since qemu v1.3.0 in 2012.
>>
>> Note that the NBD project has not actually yet posted a link for the
>> preferred URI syntax; once Rich is happy with his work on that
>> project, we can touch this up to link to that page.
>>
>> Reported-by: Martin Kletzander <mkletzan at redhat.com>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> ---

>> +  fprintf (fp, "uri=");
>> +  if (port) {
>> +    fprintf (fp, "nbd://localhost:");
>> +    shell_quote (port, fp);
>> +  }
>> +  else if (unixsocket) {
>> +    fprintf (fp, "nbd+unix://\\?socket=");
>> +    shell_quote (unixsocket, fp);
>> +  }
>> +  fprintf (fp, "\n");
>> +
>> +  /* Construct older $nbd "URL".  Unfortunately guestfish and qemu take
>>     * different syntax, so try to guess which one we need.
>>     */
>>    fprintf (fp, "nbd=");
> 
> Looks reasonable, although I guess we may one day find we need more
> quoting of unixsocket (both shell quoting and URI quoting, urrgh).

Oh, good point. Normally, our generated unixsocket name (assuming
$TMPDIR is sane) is valid as a URI query string without any % encoding,
or any shell quoting; but if $TMPDIR contains unusual characters (for
example, #), we need to URI-encode (rather than shell-quote).
Fortunately, any URI-encoded string needs no further shell quoting
(since any character that needs shell quoting also ends up getting
%-encoded for URI-encoding).

> Anyway:
> 
> ACK
> 
> Rich.
> 

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190626/77759e06/attachment.sig>


More information about the Libguestfs mailing list