[libvirt] [PATCH] nwfilter: tolerate disappearing interfaces while instantiating filter

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Aug 10 10:34:36 UTC 2011


When instantiating a filter, a VM may disappear and remove its tap 
interfaces. Tolerate this case and don't report an error.

Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>


---
  src/nwfilter/nwfilter_gentech_driver.c |   14 +++++++++++---
  1 file changed, 11 insertions(+), 3 deletions(-)

Index: libvirt-acl/src/nwfilter/nwfilter_gentech_driver.c
===================================================================
--- libvirt-acl.orig/src/nwfilter/nwfilter_gentech_driver.c
+++ libvirt-acl/src/nwfilter/nwfilter_gentech_driver.c
@@ -898,11 +898,18 @@ _virNWFilterInstantiateFilter(virConnect
      int ifindex;
      int rc;

-    if (ifaceGetIndex(true, net->ifname, &ifindex) < 0)
-        return 1;
-
      virNWFilterLockFilterUpdates();

+    /* after grabbing the filter update lock check for the interface; if
+       it's not there anymore its filters will be or are being removed
+       (while holding the lock) and we don't want to build new ones */
+    if (ifaceGetIndex(false, net->ifname, &ifindex) < 0) {
+        /* interfaces / VMs can disappear during filter instantiation;
+           don't mark it as an error */
+        rc = 0;
+        goto exit;
+    }
+
      rc = __virNWFilterInstantiateFilter(conn,
                                          teardownOld,
                                          net->ifname,
@@ -917,6 +924,7 @@ _virNWFilterInstantiateFilter(virConnect
                                          false,
                                          foundNewFilter);

+exit:
      virNWFilterUnlockFilterUpdates();

      return rc;




More information about the libvir-list mailing list