
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@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@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 :|