Convenient for testing.
Maybe something to add in Documentation/kernel-parameters.txt ?
--- cut ---
diff --git a/include/net/af_unix.h b/include/net/af_unix.h
index 18e5c3f..ea580e4 100644
--- a/include/net/af_unix.h
+++ b/include/net/af_unix.h
@@ -15,6 +15,7 @@ extern struct sock *unix_get_socket(struct file *filp);
#define UNIX_HASH_SIZE 256
extern unsigned int unix_tot_inflight;
+extern unsigned int sysctl_inflight_trigger_gc;
struct unix_address {
atomic_t refcnt;
diff --git a/net/unix/garbage.c b/net/unix/garbage.c
index f89f83b..c646c6b 100644
--- a/net/unix/garbage.c
+++ b/net/unix/garbage.c
@@ -94,7 +94,7 @@ static DEFINE_SPINLOCK(unix_gc_lock);
static DECLARE_WAIT_QUEUE_HEAD(unix_gc_wait);
unsigned int unix_tot_inflight;
-
+unsigned int sysctl_inflight_trigger_gc = 16000;
struct sock *unix_get_socket(struct file *filp)
{
@@ -259,7 +259,6 @@ static void inc_inflight_move_tail(struct unix_sock *u)
}
static bool gc_in_progress = false;
-#define UNIX_INFLIGHT_TRIGGER_GC 16000
void wait_for_unix_gc(void)
{
@@ -267,7 +266,7 @@ void wait_for_unix_gc(void)
* If number of inflight sockets is insane,
* force a garbage collect right now.
*/
- if (unix_tot_inflight > UNIX_INFLIGHT_TRIGGER_GC && !gc_in_progress)
+ if (unix_tot_inflight > sysctl_inflight_trigger_gc &&
!gc_in_progress)
unix_gc();
wait_event(unix_gc_wait, gc_in_progress == false);
}
diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c
index 397cffe..c807235 100644
--- a/net/unix/sysctl_net_unix.c
+++ b/net/unix/sysctl_net_unix.c
@@ -23,6 +23,13 @@ static ctl_table unix_table[] = {
.mode = 0644,
.proc_handler = proc_dointvec
},
+ {
+ .procname = "inflight_trigger_gc",
+ .data = &sysctl_inflight_trigger_gc,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = proc_dointvec
+ },
{ }
};
@@ -41,6 +48,8 @@ int __net_init unix_sysctl_register(struct net *net)
goto err_alloc;
table[0].data = &net->unx.sysctl_max_dgram_qlen;
+ table[1].data = &sysctl_inflight_trigger_gc;
+
net->unx.ctl = register_net_sysctl_table(net, unix_path, table);
if (net->unx.ctl == NULL)
goto err_reg;
--- end of cut ---
On Thu, Dec 09, 2010 at 06:34:26AM +0300, Pavel Vasilyev wrote:
>Maybe something to add in Documentation/kernel-parameters.txt ?
No, that is for boot parameters, you need to find something like
Documentation/networking/ip-sysctl.txt.
On 09.12.2010 07:13, Am?rico Wang wrote:
> On Thu, Dec 09, 2010 at 06:34:26AM +0300, Pavel Vasilyev wrote:
>> Maybe something to add in Documentation/kernel-parameters.txt ?
>
> No, that is for boot parameters, you need to find something like
> Documentation/networking/ip-sysctl.txt.
>
Thanks, added.
--
Pavel.
On Thu, 09 Dec 2010 14:32:41 +0300 Pavel Vasilyev wrote:
> On 09.12.2010 07:13, Am?rico Wang wrote:
> > On Thu, Dec 09, 2010 at 06:34:26AM +0300, Pavel Vasilyev wrote:
> >> Maybe something to add in Documentation/kernel-parameters.txt ?
> >
> > No, that is for boot parameters, you need to find something like
> > Documentation/networking/ip-sysctl.txt.
> >
>
> Thanks, added.
Now you need to send this to [email protected] so that the netdev
people can review it. Please.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
On 09.12.2010 20:04, Randy Dunlap wrote:
> On Thu, 09 Dec 2010 14:32:41 +0300 Pavel Vasilyev wrote:
>>>> Maybe something to add in Documentation/kernel-parameters.txt ?
>>> No, that is for boot parameters, you need to find something like
>>> Documentation/networking/ip-sysctl.txt.
>>
>> Thanks, added.
>
> Now you need to send this to [email protected] so that the netdev
> people can review it. Please.
> ---
> ~Randy
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
http://www.spinics.net/lists/netdev/msg149397.html
--
Pavel.