All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislav Kinsbursky <skinsbursky@parallels.com>
To: Trond.Myklebust@netapp.com
Cc: linux-nfs@vger.kernel.org, xemul@parallels.com, neilb@suse.de,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	jbottomley@parallels.com, bfields@fieldses.org,
	davem@davemloft.net, devel@openvz.org
Subject: [PATCH 05/11] SUNRPC: register debug sysctl table per network namespace
Date: Wed, 14 Dec 2011 14:45:21 +0300	[thread overview]
Message-ID: <20111214104521.3991.38848.stgit@localhost6.localdomain6> (raw)
In-Reply-To: <20111214103602.3991.20990.stgit@localhost6.localdomain6>

This patch introduces per-net sysctl header for debug table and moves debug
table registration to per-net opreations.
Also, this patch moves SUNRPC sysctl root registration prior to per-net
operations, since now they depends on it.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>

---
 net/sunrpc/netns.h       |    1 +
 net/sunrpc/sunrpc_syms.c |    9 ++++++---
 net/sunrpc/sysctl.c      |   17 +++++++----------
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h
index a949ddb..05ce3b8 100644
--- a/net/sunrpc/netns.h
+++ b/net/sunrpc/netns.h
@@ -14,6 +14,7 @@ struct sunrpc_net {
 	spinlock_t rpc_client_lock;
 #ifdef RPC_DEBUG
 	struct ctl_table_set sysctls;
+	struct ctl_table_header *debug_ctl_header;
 #endif
 };
 
diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c
index 44759e9..0fd156a 100644
--- a/net/sunrpc/sunrpc_syms.c
+++ b/net/sunrpc/sunrpc_syms.c
@@ -90,18 +90,21 @@ init_sunrpc(void)
 
 	cache_initialize();
 
-	err = register_pernet_subsys(&sunrpc_net_ops);
-	if (err)
-		goto out4;
 #ifdef RPC_DEBUG
 	rpc_register_sysctl();
 #endif
+	err = register_pernet_subsys(&sunrpc_net_ops);
+	if (err)
+		goto out4;
 	cache_register(&unix_gid_cache);
 	svc_init_xprt_sock();	/* svc sock transport */
 	init_socket_xprt();	/* clnt sock transport */
 	return 0;
 
 out4:
+#ifdef RPC_DEBUG
+	rpc_unregister_sysctl();
+#endif
 	rpcauth_remove_module();
 out3:
 	rpc_destroy_mempool();
diff --git a/net/sunrpc/sysctl.c b/net/sunrpc/sysctl.c
index adebf0a..eda80cf 100644
--- a/net/sunrpc/sysctl.c
+++ b/net/sunrpc/sysctl.c
@@ -42,7 +42,6 @@ EXPORT_SYMBOL_GPL(nlm_debug);
 #include <linux/nsproxy.h>
 #include "netns.h"
 
-static struct ctl_table_header *sunrpc_table_header;
 static ctl_table		debug_table[];
 
 struct ctl_path sunrpc_path[] = {
@@ -79,6 +78,9 @@ int debug_sysctl_init(struct net *net)
 	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
 
 	setup_sysctl_set(&sn->sysctls, NULL, NULL);
+	sn->debug_ctl_header = register_sunrpc_sysctl(net, debug_table);
+	if (sn->debug_ctl_header == NULL)
+		return -ENOMEM;
 	return 0;
 }
 
@@ -86,26 +88,21 @@ void debug_sysctl_exit(struct net *net)
 {
 	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
 
+	unregister_sysctl_table(sn->debug_ctl_header);
+	sn->debug_ctl_header = NULL;
 	WARN_ON(!list_empty(&sn->sysctls.list));
 }
 
 void
 rpc_register_sysctl(void)
 {
-	if (!sunrpc_table_header) {
-		register_sysctl_root(&sunrpc_debug_root);
-		sunrpc_table_header = register_sunrpc_sysctl(&init_net, debug_table);
-	}
+	register_sysctl_root(&sunrpc_debug_root);
 }
 
 void
 rpc_unregister_sysctl(void)
 {
-	if (sunrpc_table_header) {
-		unregister_sysctl_table(sunrpc_table_header);
-		unregister_sysctl_root(&sunrpc_debug_root);
-		sunrpc_table_header = NULL;
-	}
+	unregister_sysctl_root(&sunrpc_debug_root);
 }
 
 static int proc_do_xprt(ctl_table *table, int write,


  parent reply	other threads:[~2011-12-14 10:45 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-14 11:44 [PATCH 00/11] SUNRPC: make sysctl per network namespcase context Stanislav Kinsbursky
2011-12-14 11:44 ` [PATCH 01/11] SYSCTL: export root and set handling routines Stanislav Kinsbursky
2011-12-17 22:25   ` Eric W. Biederman
2011-12-17 22:25     ` Eric W. Biederman
2011-12-19  8:56     ` Stanislav Kinsbursky
2011-12-19  8:56       ` Stanislav Kinsbursky
2011-12-19 10:15       ` Eric W. Biederman
2011-12-19 12:22         ` Stanislav Kinsbursky
2011-12-19 12:22           ` Stanislav Kinsbursky
2011-12-19 16:37           ` Eric W. Biederman
2011-12-19 16:37             ` Eric W. Biederman
2011-12-19 17:24             ` Stanislav Kinsbursky
2011-12-19 17:24               ` Stanislav Kinsbursky
2012-01-03  3:49               ` Eric W. Biederman
2012-01-03  3:49                 ` Eric W. Biederman
2012-01-10 10:38                 ` Stanislav Kinsbursky
2012-01-10 10:38                   ` Stanislav Kinsbursky
2012-01-10 22:39                   ` Eric W. Biederman
2012-01-10 22:39                     ` Eric W. Biederman
2012-01-11  9:47                     ` Stanislav Kinsbursky
2012-01-11 17:21                       ` Eric W. Biederman
2012-01-11 18:02                         ` Stanislav Kinsbursky
2012-01-11 18:02                           ` Stanislav Kinsbursky
2012-01-11 19:36                           ` Eric W. Biederman
2012-01-12  9:17                             ` Stanislav Kinsbursky
2011-12-14 11:44 ` [PATCH 02/11] SUNRPC: use syctl path instead of dummy parent table Stanislav Kinsbursky
2011-12-14 11:45 ` [PATCH 03/11] SUNRPC: sysctl root for debug table introduced Stanislav Kinsbursky
2011-12-14 11:45   ` Stanislav Kinsbursky
2011-12-14 11:45 ` [PATCH 04/11] SUNRPC: per-net sysctl's set introduced Stanislav Kinsbursky
2011-12-14 11:45 ` Stanislav Kinsbursky [this message]
2011-12-14 11:45 ` [PATCH 06/11] SUNRPC: register xs_tunables sysctl table per network namespace Stanislav Kinsbursky
2011-12-14 11:45 ` [PATCH 07/11] SUNRPC: xs tunables per network namespace introduced Stanislav Kinsbursky
2011-12-14 11:45 ` [PATCH 08/11] SUNRPC: use per-net xs tunables instead of static ones Stanislav Kinsbursky
2011-12-14 11:45 ` [PATCH 09/11] SUNRPC: remove xs_tcp_fin_timeout variable Stanislav Kinsbursky
2011-12-14 11:45   ` Stanislav Kinsbursky
2011-12-14 11:46 ` [PATCH 10/11] SUNRPC: allow debug flags modifications only from init_net Stanislav Kinsbursky
2011-12-14 11:46 ` [PATCH 11/11] SUNRPC: sysctl table for rpc_debug introduced Stanislav Kinsbursky
2012-02-07 11:44 ` [PATCH 00/11] SUNRPC: make sysctl per network namespcase context Stanislav Kinsbursky
2012-02-07 13:21   ` Myklebust, Trond
2012-02-07 13:21     ` Myklebust, Trond
2012-02-07 13:21     ` Myklebust, Trond

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111214104521.3991.38848.stgit@localhost6.localdomain6 \
    --to=skinsbursky@parallels.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=bfields@fieldses.org \
    --cc=davem@davemloft.net \
    --cc=devel@openvz.org \
    --cc=jbottomley@parallels.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    --cc=xemul@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.