diff options
author | Pavel Emelyanov | 2007-12-01 13:44:15 +0100 |
---|---|---|
committer | David S. Miller | 2008-01-28 23:55:22 +0100 |
commit | d392e49756a99ba51577d265d6db83e3f01c6ac8 (patch) | |
tree | 644610d6fc7ab79a9e8a7f76357062759ec8d690 | |
parent | [UNIX]: Extend unix_sysctl_(un)register prototypes (diff) | |
download | kernel-qcow2-linux-d392e49756a99ba51577d265d6db83e3f01c6ac8.tar.gz kernel-qcow2-linux-d392e49756a99ba51577d265d6db83e3f01c6ac8.tar.xz kernel-qcow2-linux-d392e49756a99ba51577d265d6db83e3f01c6ac8.zip |
[UNIX]: Move the sysctl_unix_max_dgram_qlen
This will make all the sub-namespaces always use the
default value (10) and leave the tuning via sysctl
to the init namespace only.
Per-namespace tuning is coming.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/net_namespace.h | 3 | ||||
-rw-r--r-- | net/unix/af_unix.c | 6 | ||||
-rw-r--r-- | net/unix/sysctl_net_unix.c | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 235214c4c231..b0cf07519b81 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -38,6 +38,9 @@ struct net { /* List of all packet sockets. */ rwlock_t packet_sklist_lock; struct hlist_head packet_sklist; + + /* unix sockets */ + int sysctl_unix_max_dgram_qlen; }; #ifdef CONFIG_NET diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index a0aa6d3c2c08..73620d61762b 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -117,8 +117,6 @@ #include <net/checksum.h> #include <linux/security.h> -int sysctl_unix_max_dgram_qlen __read_mostly = 10; - static struct hlist_head unix_socket_table[UNIX_HASH_SIZE + 1]; static DEFINE_SPINLOCK(unix_table_lock); static atomic_t unix_nr_socks = ATOMIC_INIT(0); @@ -594,7 +592,7 @@ static struct sock * unix_create1(struct net *net, struct socket *sock) &af_unix_sk_receive_queue_lock_key); sk->sk_write_space = unix_write_space; - sk->sk_max_ack_backlog = sysctl_unix_max_dgram_qlen; + sk->sk_max_ack_backlog = net->sysctl_unix_max_dgram_qlen; sk->sk_destruct = unix_sock_destructor; u = unix_sk(sk); u->dentry = NULL; @@ -2140,6 +2138,8 @@ static int unix_net_init(struct net *net) { int error = -ENOMEM; + net->sysctl_unix_max_dgram_qlen = 10; + #ifdef CONFIG_PROC_FS if (!proc_net_fops_create(net, "unix", 0, &unix_seq_fops)) goto out; diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c index b2e0407e1b7b..c46cec04d23f 100644 --- a/net/unix/sysctl_net_unix.c +++ b/net/unix/sysctl_net_unix.c @@ -18,7 +18,7 @@ static ctl_table unix_table[] = { { .ctl_name = NET_UNIX_MAX_DGRAM_QLEN, .procname = "max_dgram_qlen", - .data = &sysctl_unix_max_dgram_qlen, + .data = &init_net.sysctl_unix_max_dgram_qlen, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_dointvec |