On 24.02.2014 18:28, Serge Hallyn wrote:
Quoting Stéphane Graber ([email protected]):
Hi,

Thanks for your patch.

Can I just ask you to sign it off? (Signed-off-by: Name <email>)

Don't use this patch.
I found another problems.
Without looking at the context, can you also give, in the patch
description, your best understanding of under which conditions
ifindex can be 0 in those two hunks?  Have you tested this with
other network and netif types (phys device;  EMPTY and NONE
netns)?

Thanks.

On Sat, Feb 22, 2014 at 03:46:22PM +0400, Vitaly Lavrov wrote:
if you try to reboot the container having a network interface type vlan, then 
the container will be halted.

Tested on kernels 3.10.x and 3.12.x

Suggest a patch to fix this problem and fix warnings for network interfaces 
type veth.


diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 046d8dd..f4d4f54 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2910,9 +2910,11 @@ static int instanciate_vlan(struct lxc_handler *handler, 
struct lxc_netdev *netd

        err = lxc_vlan_create(netdev->link, peer, netdev->priv.vlan_attr.vid);
        if (err) {
-               ERROR("failed to create vlan interface '%s' on '%s' : %s",
-                     peer, netdev->link, strerror(-err));
-               return -1;
+               if(!(handler->conf->reboot && err == -EEXIST)) {
+                       ERROR("failed to create vlan interface '%s' on '%s' : 
%s",
+                             peer, netdev->link, strerror(-err));
+                       return -1;
+               }
        }

        netdev->ifindex = if_nametoindex(peer);
@@ -3089,13 +3091,15 @@ void lxc_delete_network(struct lxc_handler *handler)
                if (netdev_deconf[netdev->type](handler, netdev)) {
                        WARN("failed to destroy netdev");
                }
+               if (!netdev->ifindex) continue;
+               if ( netdev->type == LXC_NET_VLAN || netdev->type == 
LXC_NET_VETH)
+                       continue;

                /* Recent kernel remove the virtual interfaces when the network
                 * namespace is destroyed but in case we did not moved the
                 * interface to the network namespace, we have to destroy it
                 */
-               if (netdev->ifindex != 0 &&
-                   lxc_netdev_delete_by_index(netdev->ifindex))
+               if (lxc_netdev_delete_by_index(netdev->ifindex))
                        WARN("failed to remove interface '%s'", netdev->name);
        }
  }

_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel


--
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com



_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel


_______________________________________________
lxc-devel mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to