nwfilter: tolerate disappearing interfaces while instantiating filter

When instantiating a filter, a VM may disappear and remove its tap interfaces. Tolerate this case and don't report an error.
This commit is contained in:
Stefan Berger 2011-08-11 06:56:50 -04:00
parent d30d572650
commit 762101c7af
1 changed files with 11 additions and 3 deletions

View File

@ -898,11 +898,18 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
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 cleanup;
}
rc = __virNWFilterInstantiateFilter(conn,
teardownOld,
net->ifname,
@ -917,6 +924,7 @@ _virNWFilterInstantiateFilter(virConnectPtr conn,
false,
foundNewFilter);
cleanup:
virNWFilterUnlockFilterUpdates();
return rc;