[libvirt] qemu_driver migrateuri handling broken?
Gregor Schaffrath
grsch at net.t-labs.tu-berlin.de
Mon Sep 21 20:24:46 UTC 2009
On Mon, Sep 21, 2009 at 12:46:46PM +0100, Daniel P. Berrange wrote:
> On Wed, Sep 16, 2009 at 05:42:50PM +0200, Gregor Schaffrath wrote:
> > Hi all.
> >
> > Short summary on DV's request ;)
> >
> > I ran into a problem migrating kvm machines with libvirt-0.6.5:
> >
> > 1) At first, using the same syntax for the migrateuri as with xen (just the
> > IP) did not work... looking into the source code (! ;) ), I found a
> > different syntax for qemu.
>
> The URI schemes should be listed in the driver capabilities XML.
> The reason they are different is that they are two different ways
> of doing migration.
>
> We are working on a new tunnelled migration scheme that will be
> uniform across drivers.
ic - To be honest, I was confused by the migrateuri anyhow, since I
considered the situation where libvirt traffic is tunneled via SSH, but
Xen-/KVM-/foo communication may be direct a rather rare exception (or am
I mistaken?) (I understood that this was the rationale behind the
hostname-Query in the first place)
>
> > 2) using tcp://<ip>:<port> just produced an 'unknown failure' on the
> > receiving side:
> > root at loadgen137:~> virsh -c qemu:///system migrate --live kvm-testnode-vnode3 qemu+tcp://10.192.11.136/system?no_verify=1 tcp://10.192.11.136:12345
> > error: Unknown failure
> > (Note: it was working like a charm when I eliminated the migrateuri
> > altogether,
>
> Hmm, try tcp:10.192.11.136:12345 instead - for some unknown reason
> it is not using correct URI formats.
works indeed :)
>
> > 3) removing the case distinction and the handling of the migrateuri in
> > the qemudDomainMigratePrepare2 function in qemu_driver.c entirely
> > (if-statement, and full else-part) solved both my issues.
>
> I don't know what exactly you removed, by you'll almost certainly have
> broken something else.
the part doesn't do much besides setting the port - the hostname is even
ignored ;) ... and the error comes from the receiving side - not the
sending one.
Therefore as far as I see, the only thing broken is that now the sending
side can't choose the listening port number on the receiving side (is
this a debugging feature?)
Cheers & thx for the response,
Gregor.
---snip---
root at loadgen137:/usr/src# diff libvirt-0.6.5/src/qemu_driver.c
libvirt-0.6.5.modified/src/qemu_driver.c
4862c4862
< if (uri_in == NULL) {
---
> //if (uri_in == NULL) {
4878c4878
< } else {
---
> //} else {
4883c4883
< if (!STRPREFIX (uri_in, "tcp:")) {
---
> /* if (!STRPREFIX (uri_in, "tcp:")) {
4887c4887
< }
---
> }*/
4890,4892c4890,4892
< p = strrchr (uri_in, ':');
< p++; /* definitely has a ':' in it, see above */
< this_port = virParseNumber (&p);
---
> // p = strrchr (uri_in, ':');
> // p++; /* definitely has a ':' in it, see above */
> /* this_port = virParseNumber (&p);
4898c4898
< }
---
--snip---
> }*/
>
> daniel
> --
> |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
> |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
> |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
> |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list