forked from luck/tmp_suning_uos_patched
SUNRPC: relocate the creation of socket-specific tunables
Clean-up: The RPC client currently creates some sysctls that are specific to the socket transport. Move those entirely into xprtsock.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
282b32e17f
commit
fbf76683ff
|
@ -18,7 +18,6 @@
|
|||
#include <linux/sunrpc/types.h>
|
||||
#include <linux/sunrpc/sched.h>
|
||||
#include <linux/sunrpc/stats.h>
|
||||
#include <linux/sunrpc/xprt.h>
|
||||
|
||||
/*
|
||||
* Declare the debug flags here
|
||||
|
@ -119,11 +118,6 @@ proc_dodebug(ctl_table *table, int write, struct file *file,
|
|||
}
|
||||
|
||||
|
||||
static unsigned int min_slot_table_size = RPC_MIN_SLOT_TABLE;
|
||||
static unsigned int max_slot_table_size = RPC_MAX_SLOT_TABLE;
|
||||
static unsigned int xprt_min_resvport_limit = RPC_MIN_RESVPORT;
|
||||
static unsigned int xprt_max_resvport_limit = RPC_MAX_RESVPORT;
|
||||
|
||||
static ctl_table debug_table[] = {
|
||||
{
|
||||
.ctl_name = CTL_RPCDEBUG,
|
||||
|
@ -157,50 +151,6 @@ static ctl_table debug_table[] = {
|
|||
.mode = 0644,
|
||||
.proc_handler = &proc_dodebug
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_SLOTTABLE_UDP,
|
||||
.procname = "udp_slot_table_entries",
|
||||
.data = &xprt_udp_slot_table_entries,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &min_slot_table_size,
|
||||
.extra2 = &max_slot_table_size
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_SLOTTABLE_TCP,
|
||||
.procname = "tcp_slot_table_entries",
|
||||
.data = &xprt_tcp_slot_table_entries,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &min_slot_table_size,
|
||||
.extra2 = &max_slot_table_size
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_MIN_RESVPORT,
|
||||
.procname = "min_resvport",
|
||||
.data = &xprt_min_resvport,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &xprt_min_resvport_limit,
|
||||
.extra2 = &xprt_max_resvport_limit
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_MAX_RESVPORT,
|
||||
.procname = "max_resvport",
|
||||
.data = &xprt_max_resvport,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &xprt_min_resvport_limit,
|
||||
.extra2 = &xprt_max_resvport_limit
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
};
|
||||
|
||||
|
|
|
@ -45,6 +45,92 @@ unsigned int xprt_tcp_slot_table_entries = RPC_DEF_SLOT_TABLE;
|
|||
unsigned int xprt_min_resvport = RPC_DEF_MIN_RESVPORT;
|
||||
unsigned int xprt_max_resvport = RPC_DEF_MAX_RESVPORT;
|
||||
|
||||
/*
|
||||
* We can register our own files under /proc/sys/sunrpc by
|
||||
* calling register_sysctl_table() again. The files in that
|
||||
* directory become the union of all files registered there.
|
||||
*
|
||||
* We simply need to make sure that we don't collide with
|
||||
* someone else's file names!
|
||||
*/
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
|
||||
static unsigned int min_slot_table_size = RPC_MIN_SLOT_TABLE;
|
||||
static unsigned int max_slot_table_size = RPC_MAX_SLOT_TABLE;
|
||||
static unsigned int xprt_min_resvport_limit = RPC_MIN_RESVPORT;
|
||||
static unsigned int xprt_max_resvport_limit = RPC_MAX_RESVPORT;
|
||||
|
||||
static struct ctl_table_header *sunrpc_table_header;
|
||||
|
||||
/*
|
||||
* FIXME: changing the UDP slot table size should also resize the UDP
|
||||
* socket buffers for existing UDP transports
|
||||
*/
|
||||
static ctl_table xs_tunables_table[] = {
|
||||
{
|
||||
.ctl_name = CTL_SLOTTABLE_UDP,
|
||||
.procname = "udp_slot_table_entries",
|
||||
.data = &xprt_udp_slot_table_entries,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &min_slot_table_size,
|
||||
.extra2 = &max_slot_table_size
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_SLOTTABLE_TCP,
|
||||
.procname = "tcp_slot_table_entries",
|
||||
.data = &xprt_tcp_slot_table_entries,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &min_slot_table_size,
|
||||
.extra2 = &max_slot_table_size
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_MIN_RESVPORT,
|
||||
.procname = "min_resvport",
|
||||
.data = &xprt_min_resvport,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &xprt_min_resvport_limit,
|
||||
.extra2 = &xprt_max_resvport_limit
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_MAX_RESVPORT,
|
||||
.procname = "max_resvport",
|
||||
.data = &xprt_max_resvport,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec_minmax,
|
||||
.strategy = &sysctl_intvec,
|
||||
.extra1 = &xprt_min_resvport_limit,
|
||||
.extra2 = &xprt_max_resvport_limit
|
||||
},
|
||||
{
|
||||
.ctl_name = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static ctl_table sunrpc_table[] = {
|
||||
{
|
||||
.ctl_name = CTL_SUNRPC,
|
||||
.procname = "sunrpc",
|
||||
.mode = 0555,
|
||||
.child = xs_tunables_table
|
||||
},
|
||||
{
|
||||
.ctl_name = 0,
|
||||
},
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* How many times to try sending a request on a socket before waiting
|
||||
* for the socket buffer to clear.
|
||||
|
@ -1504,19 +1590,34 @@ struct rpc_xprt *xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_
|
|||
}
|
||||
|
||||
/**
|
||||
* init_socket_xprt - stub
|
||||
* init_socket_xprt - set up xprtsock's sysctls
|
||||
*
|
||||
*/
|
||||
int init_socket_xprt(void)
|
||||
{
|
||||
#ifdef RPC_DEBUG
|
||||
if (!sunrpc_table_header) {
|
||||
sunrpc_table_header = register_sysctl_table(sunrpc_table, 1);
|
||||
#ifdef CONFIG_PROC_FS
|
||||
if (sunrpc_table[0].de)
|
||||
sunrpc_table[0].de->owner = THIS_MODULE;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* cleanup_socket_xprt - stub
|
||||
* cleanup_socket_xprt - remove xprtsock's sysctls
|
||||
*
|
||||
*/
|
||||
void cleanup_socket_xprt(void)
|
||||
{
|
||||
return;
|
||||
#ifdef RPC_DEBUG
|
||||
if (sunrpc_table_header) {
|
||||
unregister_sysctl_table(sunrpc_table_header);
|
||||
sunrpc_table_header = NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user