diff options
author | ps <ps@FreeBSD.org> | 2006-04-21 09:25:40 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2006-04-21 09:25:40 +0000 |
commit | 10b2fe8deaf19b4c81cb9088e607c6b818b49a2b (patch) | |
tree | 104c2b8ecefe4f49f0608012d591ed6bc153383e /sys/kern/kern_mbuf.c | |
parent | 71dd15704489306788703f67dac59f4814c34efe (diff) | |
download | FreeBSD-src-10b2fe8deaf19b4c81cb9088e607c6b818b49a2b.zip FreeBSD-src-10b2fe8deaf19b4c81cb9088e607c6b818b49a2b.tar.gz |
Allow for nmbclusters and maxsockets to be increased via sysctl.
An eventhandler is used to update all the various zones that depend
on these values.
Diffstat (limited to 'sys/kern/kern_mbuf.c')
-rw-r--r-- | sys/kern/kern_mbuf.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c index 84682de..7f39bd8 100644 --- a/sys/kern/kern_mbuf.c +++ b/sys/kern/kern_mbuf.c @@ -112,7 +112,25 @@ SYSINIT(tunable_mbinit, SI_SUB_TUNABLES, SI_ORDER_ANY, tunable_mbinit, NULL); SYSCTL_DECL(_kern_ipc); /* XXX: These should be tuneables. Can't change UMA limits on the fly. */ -SYSCTL_INT(_kern_ipc, OID_AUTO, nmbclusters, CTLFLAG_RW, &nmbclusters, 0, +static int +sysctl_nmbclusters(SYSCTL_HANDLER_ARGS) +{ + int error, newnmbclusters; + + newnmbclusters = nmbclusters; + error = sysctl_handle_int(oidp, &newnmbclusters, sizeof(int), req); + if (error == 0 && req->newptr) { + if (newnmbclusters > nmbclusters) { + nmbclusters = newnmbclusters; + uma_zone_set_max(zone_clust, nmbclusters); + EVENTHANDLER_INVOKE(nmbclusters_change); + } else + error = EINVAL; + } + return (error); +} +SYSCTL_PROC(_kern_ipc, OID_AUTO, nmbclusters, CTLTYPE_INT|CTLFLAG_RW, +&nmbclusters, 0, sysctl_nmbclusters, "IU", "Maximum number of mbuf clusters allowed"); SYSCTL_INT(_kern_ipc, OID_AUTO, nmbjumbop, CTLFLAG_RW, &nmbjumbop, 0, "Maximum number of mbuf page size jumbo clusters allowed"); |