Re: [libvirt] [PATCH] conf: Don't use the current state in def-data.network.actual when migrate

2015-01-07 Thread Jiri Denemark
On Thu, Dec 25, 2014 at 11:38:00 +0800, Luyao Huang wrote:
 https://bugzilla.redhat.com/show_bug.cgi?id=1177194
 
 When migrate a vm, we will generate a xml via qemuDomainDefFormatLive and
 pass this xml to target libvirtd. Libvirt will use the current network
 state in def-data.network.actual to generate the xml, this will make
 migrate failed when we set a network type guest interface use a macvtap
 network as a source in a vm then migrate vm to another host(which has the
 different macvtap network settings: different interface name, bridge name...)
 
 Add a flag check in virDomainNetDefFormat, if we set a 
 VIR_DOMAIN_XML_MIGRATABLE
 flag when call virDomainNetDefFormat, we won't get the current vm interface
 state.
 
 Signed-off-by: Luyao Huang lhu...@redhat.com
 ---
  src/conf/domain_conf.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
 index aafc05e..fffd6cd 100644
 --- a/src/conf/domain_conf.c
 +++ b/src/conf/domain_conf.c
 @@ -17436,7 +17436,9 @@ virDomainNetDefFormat(virBufferPtr buf,
  unsigned int actualType = virDomainNetGetActualType(def);
  bool publicActual
 = (def-type == VIR_DOMAIN_NET_TYPE_NETWORK  
 def-data.network.actual 
 -  !(flags  (VIR_DOMAIN_XML_INACTIVE | 
 VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET)));
 +  !(flags  (VIR_DOMAIN_XML_INACTIVE |
 + VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET |
 + VIR_DOMAIN_XML_MIGRATABLE)));
  const char *typeStr;
  virDomainHostdevDefPtr hostdef = NULL;
  char macstr[VIR_MAC_STRING_BUFLEN];

ACK, however the initialization of publicActual looks ugly (not your
fault) so a changed it a bit before pushing.

Jirka

@@ -17705,18 +17705,23 @@ virDomainNetDefFormat(virBufferPtr buf,
   virDomainNetDefPtr def,
   unsigned int flags)
 {
-/* publicActual is true if we should report the current state in
- * def-data.network.actual *instead of* the config (*not* in
- * addition to)
- */
 unsigned int actualType = virDomainNetGetActualType(def);
-bool publicActual
-   = (def-type == VIR_DOMAIN_NET_TYPE_NETWORK  def-data.network.actual 

-  !(flags  (VIR_DOMAIN_XML_INACTIVE | 
VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET)));
+bool publicActual = false;
 const char *typeStr;
 virDomainHostdevDefPtr hostdef = NULL;
 char macstr[VIR_MAC_STRING_BUFLEN];
 
+/* publicActual is true if we should report the current state in
+ * def-data.network.actual *instead of* the config (*not* in
+ * addition to)
+ */
+if (def-type == VIR_DOMAIN_NET_TYPE_NETWORK 
+def-data.network.actual 
+!(flags  (VIR_DOMAIN_XML_INACTIVE |
+   VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET |
+   VIR_DOMAIN_XML_MIGRATABLE)))
+publicActual = true;
+
 if (publicActual) {
 if (!(typeStr = virDomainNetTypeToString(actualType))) {
 virReportError(VIR_ERR_INTERNAL_ERROR,

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


Re: [libvirt] [PATCH] conf: Don't use the current state in def-data.network.actual when migrate

2015-01-07 Thread lhuang


On 01/07/2015 08:16 PM, Jiri Denemark wrote:

On Thu, Dec 25, 2014 at 11:38:00 +0800, Luyao Huang wrote:

https://bugzilla.redhat.com/show_bug.cgi?id=1177194

When migrate a vm, we will generate a xml via qemuDomainDefFormatLive and
pass this xml to target libvirtd. Libvirt will use the current network
state in def-data.network.actual to generate the xml, this will make
migrate failed when we set a network type guest interface use a macvtap
network as a source in a vm then migrate vm to another host(which has the
different macvtap network settings: different interface name, bridge name...)

Add a flag check in virDomainNetDefFormat, if we set a VIR_DOMAIN_XML_MIGRATABLE
flag when call virDomainNetDefFormat, we won't get the current vm interface
state.

Signed-off-by: Luyao Huang lhu...@redhat.com
---
  src/conf/domain_conf.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index aafc05e..fffd6cd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -17436,7 +17436,9 @@ virDomainNetDefFormat(virBufferPtr buf,
  unsigned int actualType = virDomainNetGetActualType(def);
  bool publicActual
 = (def-type == VIR_DOMAIN_NET_TYPE_NETWORK  def-data.network.actual 

-  !(flags  (VIR_DOMAIN_XML_INACTIVE | 
VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET)));
+  !(flags  (VIR_DOMAIN_XML_INACTIVE |
+ VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET |
+ VIR_DOMAIN_XML_MIGRATABLE)));
  const char *typeStr;
  virDomainHostdevDefPtr hostdef = NULL;
  char macstr[VIR_MAC_STRING_BUFLEN];

ACK, however the initialization of publicActual looks ugly (not your
fault) so a changed it a bit before pushing.


Thanks for your  review!

Jirka

@@ -17705,18 +17705,23 @@ virDomainNetDefFormat(virBufferPtr buf,
virDomainNetDefPtr def,
unsigned int flags)
  {
-/* publicActual is true if we should report the current state in
- * def-data.network.actual *instead of* the config (*not* in
- * addition to)
- */
  unsigned int actualType = virDomainNetGetActualType(def);
-bool publicActual
-   = (def-type == VIR_DOMAIN_NET_TYPE_NETWORK  def-data.network.actual 

-  !(flags  (VIR_DOMAIN_XML_INACTIVE | 
VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET)));
+bool publicActual = false;
  const char *typeStr;
  virDomainHostdevDefPtr hostdef = NULL;
  char macstr[VIR_MAC_STRING_BUFLEN];
  
+/* publicActual is true if we should report the current state in

+ * def-data.network.actual *instead of* the config (*not* in
+ * addition to)
+ */
+if (def-type == VIR_DOMAIN_NET_TYPE_NETWORK 
+def-data.network.actual 
+!(flags  (VIR_DOMAIN_XML_INACTIVE |
+   VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET |
+   VIR_DOMAIN_XML_MIGRATABLE)))
+publicActual = true;
+
  if (publicActual) {
  if (!(typeStr = virDomainNetTypeToString(actualType))) {
  virReportError(VIR_ERR_INTERNAL_ERROR,


yep, the codes looks beautiful now, thanks your help!

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


[libvirt] [PATCH] conf: Don't use the current state in def-data.network.actual when migrate

2014-12-24 Thread Luyao Huang
https://bugzilla.redhat.com/show_bug.cgi?id=1177194

When migrate a vm, we will generate a xml via qemuDomainDefFormatLive and
pass this xml to target libvirtd. Libvirt will use the current network
state in def-data.network.actual to generate the xml, this will make
migrate failed when we set a network type guest interface use a macvtap
network as a source in a vm then migrate vm to another host(which has the
different macvtap network settings: different interface name, bridge name...)

Add a flag check in virDomainNetDefFormat, if we set a VIR_DOMAIN_XML_MIGRATABLE
flag when call virDomainNetDefFormat, we won't get the current vm interface
state.

Signed-off-by: Luyao Huang lhu...@redhat.com
---
 src/conf/domain_conf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index aafc05e..fffd6cd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -17436,7 +17436,9 @@ virDomainNetDefFormat(virBufferPtr buf,
 unsigned int actualType = virDomainNetGetActualType(def);
 bool publicActual
= (def-type == VIR_DOMAIN_NET_TYPE_NETWORK  def-data.network.actual 

-  !(flags  (VIR_DOMAIN_XML_INACTIVE | 
VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET)));
+  !(flags  (VIR_DOMAIN_XML_INACTIVE |
+ VIR_DOMAIN_XML_INTERNAL_ACTUAL_NET |
+ VIR_DOMAIN_XML_MIGRATABLE)));
 const char *typeStr;
 virDomainHostdevDefPtr hostdef = NULL;
 char macstr[VIR_MAC_STRING_BUFLEN];
-- 
1.8.3.1

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