[Libguestfs] [libguestfs] Problem Connecting to RBD images using Sys::Guestfs Perl Module

Richard W.M. Jones rjones at redhat.com
Mon Nov 25 21:58:50 UTC 2013


On Mon, Nov 25, 2013 at 12:52:21PM -0700, Jon wrote:
> Hello,
> 
> I'm having trouble connecting to rbd images. It seems like somewhere the
> name is getting chewed up.  I wonder if this is related to my previous
> troubles [1] [2] with rbd images.
> 
> I'm trying to add an rbd image, but when I launch the guestfs object I get
> an error:
> 
> >> libguestfs: trace: launch = -1 (error)
> 
> I'm adding a single RBD
> >> libguestfs: trace: add_drive "libvirt-pool/build_vm_test-os"
> "format:raw" "protocol:rbd" "server:192.168.0.35:6789 192.168.0.2:6789
> 192.168.0.40:6789"
> 
> But it seems like the name is getting chewed up in the call to kvm:
> 
> >> -drive
> file=rbd:libvirt:mon_host=192.168.0.35\:6789\;192.168.0.2\:6789\;192.168.0.40\:6789:auth_supported=none,cache=writeback,format=raw,id=hd0,if=none
> >> disk image
> rbd:libvirt:mon_host=192.168.0.35\:6789\;192.168.0.2\:6789\;192.168.0.40\:6789:auth_supported=none:
> Invalid argument
> 
> I am able to add non rbd images without an issue.
> 
> Any thoughts?

As a general comment, there should be no difference between the API
from C and the API from Perl.  Of course, occasionally we introduce
Perl-specific bugs in the bindings, but these are rarer than you would
think (the Perl bindings are automatically generated, so any bugs
would be systematic, affecting many different calls at once).

[...]
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=1026688
> [2] https://www.redhat.com/archives/libguestfs/2013-November/msg00003.html
> 
> Full Debug Output:
> 
> libguestfs: trace: set_verbose true
> libguestfs: trace: set_verbose = 0
> libguestfs: create: flags = 0, handle = 0x2e74d90, program = perl
> libguestfs: trace: set_trace true
> libguestfs: trace: set_trace = 0
> libguestfs: trace: add_drive "libvirt-pool/build_vm_test-os" "format:raw"
> "protocol:rbd" "server:192.168.0.35:6789 192.168.0.2:6789 192.168.0.40:6789"
> libguestfs: trace: add_drive = 0
> libguestfs: trace: launch
> libguestfs: trace: get_tmpdir
> libguestfs: trace: get_tmpdir = "/tmp"
> libguestfs: trace: get_backend
> libguestfs: trace: get_backend = "direct"
[...]
>     -drive
> file=rbd:libvirt:mon_host=192.168.0.35\:6789\;192.168.0.2\:6789\;192.168.0.40\:6789:auth_supported=none,cache=writeback,format=raw,id=hd0,if=none

In this case the export name is getting truncated ...

With the direct backend, the following code is responsible for
constructing the -drive parameter:

https://github.com/libguestfs/libguestfs/blob/master/src/drives.c#L1307

There seems to be something pretty strange going on with the
u.exportname field.  I can't quite understand it at the moment, but it
is certainly a bug.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list