These pernet_operations make pretty simple actions
like variable initialization on init, debug checks
on exit, and so on, and they obviously are able
to be executed in parallel with any others:

vrf_net_ops
lockd_net_ops
grace_net_ops
xfrm6_tunnel_net_ops
kcm_net_ops
tcf_net_ops

Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 drivers/net/vrf.c       |    1 +
 fs/lockd/svc.c          |    1 +
 fs/nfs_common/grace.c   |    1 +
 net/ipv6/xfrm6_tunnel.c |    1 +
 net/kcm/kcmsock.c       |    1 +
 net/sched/cls_api.c     |    1 +
 6 files changed, 6 insertions(+)

diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index 951a4b42cb29..71b174e404e5 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -1431,6 +1431,7 @@ static struct pernet_operations vrf_net_ops 
__net_initdata = {
        .init = vrf_netns_init,
        .id   = &vrf_net_id,
        .size = sizeof(bool),
+       .async = true,
 };
 
 static int __init vrf_init_module(void)
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index 9c36d614bf89..2dee4e03ff1c 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -709,6 +709,7 @@ static struct pernet_operations lockd_net_ops = {
        .exit = lockd_exit_net,
        .id = &lockd_net_id,
        .size = sizeof(struct lockd_net),
+       .async = true,
 };
 
 
diff --git a/fs/nfs_common/grace.c b/fs/nfs_common/grace.c
index 5be08f02a76b..8c743a405df6 100644
--- a/fs/nfs_common/grace.c
+++ b/fs/nfs_common/grace.c
@@ -118,6 +118,7 @@ static struct pernet_operations grace_net_ops = {
        .exit = grace_exit_net,
        .id   = &grace_net_id,
        .size = sizeof(struct list_head),
+       .async = true,
 };
 
 static int __init
diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c
index f85f0d7480ac..a9673619e0e9 100644
--- a/net/ipv6/xfrm6_tunnel.c
+++ b/net/ipv6/xfrm6_tunnel.c
@@ -353,6 +353,7 @@ static struct pernet_operations xfrm6_tunnel_net_ops = {
        .exit   = xfrm6_tunnel_net_exit,
        .id     = &xfrm6_tunnel_net_id,
        .size   = sizeof(struct xfrm6_tunnel_net),
+       .async  = true,
 };
 
 static int __init xfrm6_tunnel_init(void)
diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
index 435594648dac..a6cd0712e063 100644
--- a/net/kcm/kcmsock.c
+++ b/net/kcm/kcmsock.c
@@ -2015,6 +2015,7 @@ static struct pernet_operations kcm_net_ops = {
        .exit = kcm_exit_net,
        .id   = &kcm_net_id,
        .size = sizeof(struct kcm_net),
+       .async = true,
 };
 
 static int __init kcm_init(void)
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index 3e14d38e5d42..f0763234105a 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -1613,6 +1613,7 @@ static struct pernet_operations tcf_net_ops = {
        .exit = tcf_net_exit,
        .id   = &tcf_net_id,
        .size = sizeof(struct tcf_net),
+       .async = true,
 };
 
 static int __init tc_filter_init(void)

Reply via email to