mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
virnetdevbridge: Ignore EEXIST when adding an entry to fdb
When updating entries in a bridge forwarding database (i.e., when macTableManager='libvirt' is configured for the bridge), we may end up in a situation when the entry we want to add is already present. Let's just ignore the error in such a case. This fixes an error to resume a domain when fdb entries were not properly removed when the domain was paused: virsh # resume test error: Failed to resume domain test error: error adding fdb entry for vnet2: File exists For some reason, fdb entries are only removed when libvirt explicitly stops CPUs, but nothing happens when we just get STOP event from QEMU. An alternative approach would be to make sure we always remove the entries regardless on why a domain was paused (e.g., during migration), but that would be a significantly more disruptive change with possible side effects. https://bugzilla.redhat.com/show_bug.cgi?id=1603155 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Laine Stump <laine@redhat.com>
This commit is contained in:
parent
b13f801d6f
commit
241c22a9a5
@ -1063,10 +1063,14 @@ virNetDevBridgeFDBAddDel(const virMacAddr *mac, const char *ifname,
|
||||
if (resp->nlmsg_len < NLMSG_LENGTH(sizeof(*err)))
|
||||
goto malformed_resp;
|
||||
if (err->error) {
|
||||
if (isAdd && -err->error == EEXIST) {
|
||||
VIR_DEBUG("fdb entry for %s already exists", ifname);
|
||||
} else {
|
||||
virReportSystemError(-err->error,
|
||||
_("error adding fdb entry for %s"), ifname);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NLMSG_DONE:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user