]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
macvtap: libvirtd forgot macvtap dev name when restarted
authorStefan Berger <stefanb@us.ibm.com>
Wed, 3 Nov 2010 11:26:29 +0000 (07:26 -0400)
committerStefan Berger <stefanb@us.ibm.com>
Wed, 3 Nov 2010 11:26:29 +0000 (07:26 -0400)
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.

src/conf/domain_conf.c

index fe937117f8937705c14428ab4228d49b40370abb..cdfb890f43e996a563e80732136dd72d72e63e21 100644 (file)
@@ -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;