From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Lezcano Subject: Re: [PATCH] netns: Coexist with the sysfs limitations Date: Wed, 22 Oct 2008 22:40:12 +0200 Message-ID: <48FF8FAC.1000805@fr.ibm.com> References: <20081022152144.351965414@theryb.frec.bull.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Benjamin Thery , netdev , Dave Miller , Greg Kroah-Hartman , Al Viro , Serge Hallyn , linux-kernel@vger.kernel.org, Tejun Heo , Denis Lunev , Linux Containers To: "Eric W. Biederman" Return-path: Received: from mtagate2.de.ibm.com ([195.212.17.162]:50753 "EHLO mtagate2.de.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753783AbYJVUkV (ORCPT ); Wed, 22 Oct 2008 16:40:21 -0400 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: Eric W. Biederman wrote: > To make testing of the network namespace simpler allow > the network namespace code and the sysfs code to be > compiled and run at the same time. To do this only > virtual devices are allowed in the additional network > namespaces and those virtual devices are not placed > in the kobject tree. >=20 > Since virtual devices don't actually do anything interesting > hardware wise that needs device management there should > be no loss in keeping them out of the kobject tree and > by implication sysfs. The gain in ease of testing > and code coverage should be significant. >=20 > I.e. people running distributions that make it next to > impossible to boot without sysfs should at be able to > boot a test kernel now. >=20 > Plus no ABIs are harmed with this patch. >=20 > Signed-off-by: Eric W. Biederman Acked-by: Daniel Lezcano > --- > net/Kconfig | 2 +- > net/core/dev.c | 12 +++++++++++- > net/core/net-sysfs.c | 7 +++++++ > 3 files changed, 19 insertions(+), 2 deletions(-) >=20 > diff --git a/net/Kconfig b/net/Kconfig > index d789d79..8c3d97c 100644 > --- a/net/Kconfig > +++ b/net/Kconfig > @@ -27,7 +27,7 @@ menu "Networking options" > config NET_NS > bool "Network namespace support" > default n > - depends on EXPERIMENTAL && !SYSFS && NAMESPACES > + depends on EXPERIMENTAL && NAMESPACES > help > Allow user space to create what appear to be multiple instances > of the network stack. > diff --git a/net/core/dev.c b/net/core/dev.c > index b8a4fd0..a7f0461 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -4449,6 +4449,15 @@ int dev_change_net_namespace(struct net_device= *dev, struct net *net, const char > if (dev->features & NETIF_F_NETNS_LOCAL) > goto out; >=20 > +#ifdef CONFIG_SYSFS > + /* Don't allow real devices to be moved when sysfs > + * is enabled. > + */ > + err =3D -EINVAL; > + if (dev->dev.parent) > + goto out; > +#endif > + > /* Ensure the device has been registrered */ > err =3D -EINVAL; > if (dev->reg_state !=3D NETREG_REGISTERED) > @@ -4506,6 +4515,8 @@ int dev_change_net_namespace(struct net_device = *dev, struct net *net, const char > */ > dev_addr_discard(dev); >=20 > + netdev_unregister_kobject(dev); > + > /* Actually switch the network namespace */ > dev_net_set(dev, net); >=20 > @@ -4522,7 +4533,6 @@ int dev_change_net_namespace(struct net_device = *dev, struct net *net, const char > } >=20 > /* Fixup kobjects */ > - netdev_unregister_kobject(dev); > err =3D netdev_register_kobject(dev); > WARN_ON(err); >=20 > diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c > index 92d6b94..85cb8bd 100644 > --- a/net/core/net-sysfs.c > +++ b/net/core/net-sysfs.c > @@ -476,6 +476,10 @@ void netdev_unregister_kobject(struct net_device= * net) > struct device *dev =3D &(net->dev); >=20 > kobject_get(&dev->kobj); > + > + if (dev_net(net) !=3D &init_net) > + return; > + > device_del(dev); > } >=20 > @@ -501,6 +505,9 @@ int netdev_register_kobject(struct net_device *ne= t) > #endif > #endif /* CONFIG_SYSFS */ >=20 > + if (dev_net(net) !=3D &init_net) > + return 0; > + > return device_add(dev); > } >=20 --=20 Sauf indication contraire ci-dessus: Compagnie IBM France Si=E8ge Social : Tour Descartes, 2, avenue Gambetta, La D=E9fense 5, 92= 400 Courbevoie RCS Nanterre 552 118 465 =46orme Sociale : S.A.S. Capital Social : 542.737.118 ? SIREN/SIRET : 552 118 465 02430