net: Convert proc_net_ns_ops
authorKirill Tkhai <ktkhai@virtuozzo.com>
Tue, 13 Feb 2018 09:26:52 +0000 (12:26 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Feb 2018 15:36:05 +0000 (10:36 -0500)
This patch starts to convert pernet_subsys, registered
before initcalls.

proc_net_ns_ops::proc_net_ns_init()/proc_net_ns_exit()
{un,}register pernet net->proc_net and ->proc_net_stat.

Constructors and destructors of another pernet_operations
are not interested in foreign net's proc_net and proc_net_stat.
Proc filesystem privitives are synchronized on proc_subdir_lock.

So, proc_net_ns_ops methods are able to be executed
in parallel with methods of any other pernet operations.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Acked-by: Andrei Vagin <avagin@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
fs/proc/proc_net.c

index 68c06ae7888c8cb5d07053863698b7a478d68d4e..da6f8733c9c5b66636246d4beec04906f804ac86 100644 (file)
@@ -237,6 +237,7 @@ static __net_exit void proc_net_ns_exit(struct net *net)
 static struct pernet_operations __net_initdata proc_net_ns_ops = {
        .init = proc_net_ns_init,
        .exit = proc_net_ns_exit,
+       .async = true,
 };
 
 int __init proc_net_init(void)