On 07/18/2011 04:11 AM, Osier Yang wrote:
于 2011年07月18日 10:07, zhang xintao 写道:
Dear All
I try to migration a kvm guest os to another host failed
server: ubuntu 11.04 server
virsh:migrate --live --tunnelled vm1 qemu+ssh://192.168.10.3/system
error:Requested operation is not valid:cannot perform
tunnelled migration without using peer2peer flag

The error tells you all, you need to use "--p2p".

That said, why can't virsh be smarter, and automatically request the right underlying flags without making the user also type --p2p? Any problems with this patch?

From db318d41c2a70189c21303c824aa4a862815874a Mon Sep 17 00:00:00 2001
From: Eric Blake <ebl...@redhat.com>
Date: Mon, 18 Jul 2011 13:10:29 -0600
Subject: [PATCH] virsh: make migrate --tunnelled imply --p2p

We can make the virsh migrate UI friendlier by supplying the
missing bit automatically instead of erroring out when requesting
--tunnelled without --p2p.

* tools/virsh.c (doMigrate): Make --p2p optional when using
--tunnelled.
* tools/virsh.pod (migrate): Tweak wording accordingly.
---
 tools/virsh.c   |    2 +-
 tools/virsh.pod |    5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index 6c8032f..05aeb6c 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -4475,7 +4475,7 @@ doMigrate (void *opaque)
     if (vshCommandOptBool (cmd, "p2p"))
         flags |= VIR_MIGRATE_PEER2PEER;
     if (vshCommandOptBool (cmd, "tunnelled"))
-        flags |= VIR_MIGRATE_TUNNELLED;
+        flags |= VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER;

     if (vshCommandOptBool (cmd, "persistent"))
         flags |= VIR_MIGRATE_PERSIST_DEST;
diff --git a/tools/virsh.pod b/tools/virsh.pod
index e156232..e0adc31 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -534,14 +534,15 @@ Provide the maximum number of virtual CPUs supported for a guest VM on
 this connection.  If provided, the I<type> parameter must be a valid
 type attribute for the <domain> element of XML.

-=item B<migrate> [I<--live>] [I<--direct>] [I<--p2p> [I<--tunnelled>]]
+=item B<migrate> [I<--live>] [I<--direct>] [I<--p2p>] [I<--tunnelled>]
[I<--persistent>] [I<--undefinesource>] [I<--suspend>] [I<--copy-storage-all>] [I<--copy-storage-inc>] [I<--verbose>] I<domain-id> I<desturi> [I<migrateuri>]
 [I<dname>] [I<--timeout> B<seconds>]

Migrate domain to another host. Add I<--live> for live migration; I<--p2p> for peer-2-peer migration; I<--direct> for direct migration; or I<--tunnelled>
-for tunnelled migration.  I<--persistent> leaves the domain persistent on
+for tunnelled migration (I<--tunnelled> implies I<--p2p>).  I<--persistent>
+leaves the domain persistent on
destination host, I<--undefinesource> undefines the domain on the source host,
 and I<--suspend> leaves the domain paused on the destination host.
I<--copy-storage-all> indicates migration with non-shared storage with full
--
1.7.4.4



--
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to