[pve-devel] [PATCH V2 qemu-server 3/3] migration : add del_nets_bridge_fdb
Alexandre Derumier
aderumier at odiso.com
Mon Mar 21 07:27:35 CET 2022
at the end of a live migration, we need to remove old mac entries
on source host (vm is not yet stopped), before resume vm on target host
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
PVE/QemuMigrate.pm | 1 +
PVE/QemuServer.pm | 20 ++++++++++++++++++++
test/MigrationTest/QemuMigrateMock.pm | 3 +++
3 files changed, 24 insertions(+)
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 104e62c..c96474e 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -1130,6 +1130,7 @@ sub phase3_cleanup {
# transfer replication state before move config
$self->transfer_replication_state() if $self->{is_replicated};
+ PVE::QemuServer::del_nets_bridge_fdb($conf, $vmid);
PVE::QemuConfig->move_config_to_node($vmid, $self->{node});
$self->switch_replication_job_target() if $self->{is_replicated};
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 8803f54..aa10de7 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -8145,4 +8145,24 @@ sub add_nets_bridge_fdb {
}
}
}
+
+sub del_nets_bridge_fdb {
+ my ($conf, $vmid) = @_;
+
+ foreach my $opt (keys %$conf) {
+ if ($opt =~ m/^net(\d+)$/) {
+ my $net = parse_net($conf->{$opt});
+ next if !$net;
+ next if !$net->{macaddr};
+
+ my $iface = "tap${vmid}i$1";
+ if ($have_sdn) {
+ PVE::Network::SDN::Zones::del_bridge_fdb($iface, $net->{macaddr}, $net->{bridge}, $net->{firewall});
+ } else {
+ PVE::Network::del_bridge_fdb($iface, $net->{macaddr}, $net->{firewall});
+ }
+ }
+ }
+}
+
1;
diff --git a/test/MigrationTest/QemuMigrateMock.pm b/test/MigrationTest/QemuMigrateMock.pm
index f2c0281..f00b974 100644
--- a/test/MigrationTest/QemuMigrateMock.pm
+++ b/test/MigrationTest/QemuMigrateMock.pm
@@ -158,6 +158,9 @@ $MigrationTest::Shared::qemu_server_module->mock(
$vm_stop_executed = 1;
delete $expected_calls->{'vm_stop'};
},
+ del_nets_bridge_fdb => sub {
+ return;
+ },
);
my $qemu_server_cpuconfig_module = Test::MockModule->new("PVE::QemuServer::CPUConfig");
--
2.30.2
More information about the pve-devel
mailing list