提交 762101c7 编写于 作者: S Stefan Berger

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.
上级 d30d5726
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册