netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Dumazet <dada1@cosmosbay.com>
To: "David S. Miller" <davem@davemloft.net>
Cc: "Denis V. Lunev" <den@openvz.org>,
	Linux Netdev List <netdev@vger.kernel.org>
Subject: Re: [PATCH] net: make /proc/net/protocols namespace aware
Date: Mon, 17 Nov 2008 11:53:43 +0100	[thread overview]
Message-ID: <49214D37.2090502@cosmosbay.com> (raw)
In-Reply-To: <49214C74.3020303@cosmosbay.com>

[-- Attachment #1: Type: text/plain, Size: 1103 bytes --]

Eric Dumazet a écrit :
> Converting /proc/net/protocols to be namespace aware is quite easy
> and permits us to use sock_prot_inuse_get().
> 
> This provides seperate counters for each protocol. For example
> we can really count TCPv6 sockets and TCPv4 sockets, while previously,
> we had the same value, and this value was not namespace aware.
> 
> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
> ---
> net/core/sock.c |   27 +++++++++++++++++++++++----
> 1 files changed, 23 insertions(+), 4 deletions(-)
> 

Oops wrong attached file... sorry

[PATCH] net: make /proc/net/protocols namespace aware

Converting /proc/net/protocols to be namespace aware is quite easy
and permits us to use sock_prot_inuse_get().

This provides seperate counters for each protocol. For example
we can really count TCPv6 sockets and TCPv4 sockets, while previously,
we had the same value, and this value was not namespace aware.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
---
net/core/sock.c |   27 +++++++++++++++++++++++----
1 files changed, 23 insertions(+), 4 deletions(-) 


[-- Attachment #2: protocols_pernet.patch --]
[-- Type: text/plain, Size: 1786 bytes --]

diff --git a/net/core/sock.c b/net/core/sock.c
index 38de9c3..566eb82 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2176,7 +2176,7 @@ static void proto_seq_printf(struct seq_file *seq, struct proto *proto)
 			"%2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c\n",
 		   proto->name,
 		   proto->obj_size,
-		   proto->sockets_allocated != NULL ? atomic_read(proto->sockets_allocated) : -1,
+		   sock_prot_inuse_get(seq_file_net(seq), proto),
 		   proto->memory_allocated != NULL ? atomic_read(proto->memory_allocated) : -1,
 		   proto->memory_pressure != NULL ? *proto->memory_pressure ? "yes" : "no" : "NI",
 		   proto->max_header,
@@ -2230,7 +2230,8 @@ static const struct seq_operations proto_seq_ops = {
 
 static int proto_seq_open(struct inode *inode, struct file *file)
 {
-	return seq_open(file, &proto_seq_ops);
+	return seq_open_net(inode, file, &proto_seq_ops,
+			    sizeof(struct seq_net_private));
 }
 
 static const struct file_operations proto_seq_fops = {
@@ -2241,10 +2242,28 @@ static const struct file_operations proto_seq_fops = {
 	.release	= seq_release,
 };
 
+static __net_init int proto_init_net(struct net *net)
+{
+	if (!proc_net_fops_create(net, "protocols", S_IRUGO, &proto_seq_fops))
+		return -ENOMEM;
+
+	return 0;
+}
+
+static __net_exit void proto_exit_net(struct net *net)
+{
+	proc_net_remove(net, "protocols");
+}
+
+
+static __net_initdata struct pernet_operations proto_net_ops = {
+	.init = proto_init_net,
+	.exit = proto_exit_net,
+};
+
 static int __init proto_init(void)
 {
-	/* register /proc/net/protocols */
-	return proc_net_fops_create(&init_net, "protocols", S_IRUGO, &proto_seq_fops) == NULL ? -ENOBUFS : 0;
+	return register_pernet_subsys(&proto_net_ops);
 }
 
 subsys_initcall(proto_init);

  reply	other threads:[~2008-11-17 10:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-17 10:50 [PATCH] net: make /proc/net/protocols namespace aware Eric Dumazet
2008-11-17 10:53 ` Eric Dumazet [this message]
2008-11-17 11:15   ` Alexey Dobriyan
2008-11-17 11:27     ` Eric Dumazet
2008-11-19 23:14       ` David Miller

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=49214D37.2090502@cosmosbay.com \
    --to=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=den@openvz.org \
    --cc=netdev@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).