[PATCH] nwfilter: tolerate disappearing interfaces while instantiating filter

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

 



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@xxxxxxxxxxxxxxxxxx>


---
 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;

--
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]