[PATCH] macvtap: libvirtd forgot macvtap device name during a shutdown/restart cycle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



During a shutdown/restart cycle libvirtd forgot the macvtap device name that it had created on behalf of a VM so that a stale macvtap device remained on the host when the VM terminated. Libvirtd has to actively tear down a macvtap device and it uses its name for identifying which device to tear down.

The solution is to not blank out the <target dev='...'/> completely, but only blank it out on VMs that are not active. So, if a VM is active, the device name makes it into the XML and is also being parsed. If a VM is not active, the device name is discarded.

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>

---
 src/conf/domain_conf.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Index: libvirt-acl/src/conf/domain_conf.c
===================================================================
--- libvirt-acl.orig/src/conf/domain_conf.c
+++ libvirt-acl/src/conf/domain_conf.c
@@ -2343,7 +2343,8 @@ virDomainNetDefParseXML(virCapsPtr caps,
         def->data.direct.linkdev = dev;
         dev = NULL;

-        VIR_FREE(ifname);
+        if ((flags & VIR_DOMAIN_XML_INACTIVE))
+            VIR_FREE(ifname);

         break;

@@ -5801,6 +5802,8 @@ virDomainNetDefFormat(virBufferPtr buf,
         virBufferAddLit(buf, "/>\n");
virVirtualPortProfileFormat(buf, &def->data.direct.virtPortProfile,
                                     "      ");
+        if ((flags & VIR_DOMAIN_XML_INACTIVE))
+            VIR_FREE(def->ifname);
         break;

     case VIR_DOMAIN_NET_TYPE_USER:

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


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]