[pve-devel] [PATCH container] Fix #929: delete veths in the post-stop hook
Wolfgang Bumiller
w.bumiller at proxmox.com
Wed Apr 13 10:33:58 CEST 2016
Unfortunately it can still happen that LXC's network link
deletion netlink messages get dropped/ignored. This is the
same issue as initially reported on the forums by sigxcpu in
October, however, it seems that some users hit this problem
more reliably currently.
---
I really can't reproduce this, but this patch also shouldn't have any
bad side effects.
I just hope we don't have to upgrade it to a loop
(while (interface exists) { delete }) ...
This was also suggested by sigxcpu back in october, but somehow we
forgot about it.
src/lxc-pve-poststop-hook | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/lxc-pve-poststop-hook b/src/lxc-pve-poststop-hook
index 6f37088..a22a217 100755
--- a/src/lxc-pve-poststop-hook
+++ b/src/lxc-pve-poststop-hook
@@ -60,7 +60,19 @@ __PACKAGE__->register_method ({
my $rootfs = $ENV{LXC_ROOTFS_PATH};
die "Missing container root directory!\n" if !$rootfs;
PVE::Tools::run_command(['umount', '--recursive', $rootfs]);
-
+
+ # Because netlink is not a reliable protocol it can happen that lxc's
+ # link-deletion messages get lost (or end up being too early?)
+ for my $k (keys %$conf) {
+ next if $k !~ /^net(\d+)/;
+ my $ind = $1;
+ my $net = PVE::LXC::Config->parse_lxc_network($conf->{$k});
+ next if $net->{type} ne 'veth';
+ my $name = "veth${vmid}i${ind}";
+ # veth_delete tests with '-d /sys/class/net/$name' before running the command
+ PVE::Network::veth_delete("veth${vmid}i$ind");
+ }
+
return undef;
}});
--
2.1.4
More information about the pve-devel
mailing list