Tue, Aug 13, 2019 at 02:24:41AM CEST, dsah...@gmail.com wrote: >On 8/12/19 7:47 AM, Jiri Pirko wrote: >> From: Jiri Pirko <j...@mellanox.com> >> >> Devlink from the beginning counts with network namespaces, but the >> instances has been fixed to init_net. The first patch allows user >> to move existing devlink instances into namespaces: >> >> $ devlink dev >> netdevsim/netdevsim1 >> $ ip netns add ns1 >> $ devlink dev set netdevsim/netdevsim1 netns ns1 >> $ devlink -N ns1 dev >> netdevsim/netdevsim1 >> >> The last patch allows user to create new netdevsim instance directly >> inside network namespace of a caller. > >The namespace behavior seems odd to me. If devlink instance is created >in a namespace and never moved, it should die with the namespace. With >this patch set, devlink instance and its ports are moved to init_net on >namespace delete. > >The fib controller needs an update to return the namespace of the >devlink instance (on top of the patch applied to net):
I have really no clue what your fib abomination should behave. The devlink controls device config, that's it. No relation to netns it is in. > >diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c >index 89795071f085..fa7e876f2d3b 100644 >--- a/drivers/net/netdevsim/dev.c >+++ b/drivers/net/netdevsim/dev.c >@@ -114,11 +114,6 @@ static void nsim_dev_port_debugfs_exit(struct >nsim_dev_port *nsim_dev_port) > debugfs_remove_recursive(nsim_dev_port->ddir); > } > >-static struct net *nsim_devlink_net(struct devlink *devlink) >-{ >- return &init_net; >-} >- > static u64 nsim_dev_ipv4_fib_resource_occ_get(void *priv) > { > struct net *net = priv; >@@ -154,7 +149,7 @@ static int nsim_dev_resources_register(struct >devlink *devlink) > .size_granularity = 1, > .unit = DEVLINK_RESOURCE_UNIT_ENTRY > }; >- struct net *net = nsim_devlink_net(devlink); >+ struct net *net = devlink_net(devlink); > int err; > u64 n; > >@@ -309,7 +304,7 @@ static int nsim_dev_reload(struct devlink *devlink, > NSIM_RESOURCE_IPV4_FIB, NSIM_RESOURCE_IPV4_FIB_RULES, > NSIM_RESOURCE_IPV6_FIB, NSIM_RESOURCE_IPV6_FIB_RULES > }; >- struct net *net = nsim_devlink_net(devlink); >+ struct net *net = devlink_net(devlink); > int i; > > for (i = 0; i < ARRAY_SIZE(res_ids); ++i) { >