[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