diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-01 22:31:28 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-01 22:31:28 -0500 |
| commit | 63e9b66e29357dd12e8b1d3ebf7036e7591f81e3 (patch) | |
| tree | 5aa6a70a8f4bbf306e2825a1e2fa2660c2c1c187 /net/sunrpc/sysctl.c | |
| parent | 687fcdf741e4a268c2c7bac8b3734de761bb9719 (diff) | |
| parent | ea339d46b93c7b16e067a29aad1812f7a389815a (diff) | |
Merge branch 'for-linus' of git://linux-nfs.org/~bfields/linux
* 'for-linus' of git://linux-nfs.org/~bfields/linux: (100 commits)
SUNRPC: RPC program information is stored in unsigned integers
SUNRPC: Move exported symbol definitions after function declaration part 2
NLM: tear down RPC clients in nlm_shutdown_hosts
SUNRPC: spin svc_rqst initialization to its own function
nfsd: more careful input validation in nfsctl write methods
lockd: minor log message fix
knfsd: don't bother mapping putrootfh enoent to eperm
rdma: makefile
rdma: ONCRPC RDMA protocol marshalling
rdma: SVCRDMA sendto
rdma: SVCRDMA recvfrom
rdma: SVCRDMA Core Transport Services
rdma: SVCRDMA Transport Module
rdma: SVCRMDA Header File
svc: Add svc_xprt_names service to replace svc_sock_names
knfsd: Support adding transports by writing portlist file
svc: Add svc API that queries for a transport instance
svc: Add /proc/sys/sunrpc/transport files
svc: Add transport hdr size for defer/revisit
svc: Move the xprt independent code to the svc_xprt.c file
...
Diffstat (limited to 'net/sunrpc/sysctl.c')
| -rw-r--r-- | net/sunrpc/sysctl.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/net/sunrpc/sysctl.c b/net/sunrpc/sysctl.c index bada7de0c2fc..0f8c439b848a 100644 --- a/net/sunrpc/sysctl.c +++ b/net/sunrpc/sysctl.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/sunrpc/types.h> | 18 | #include <linux/sunrpc/types.h> |
| 19 | #include <linux/sunrpc/sched.h> | 19 | #include <linux/sunrpc/sched.h> |
| 20 | #include <linux/sunrpc/stats.h> | 20 | #include <linux/sunrpc/stats.h> |
| 21 | #include <linux/sunrpc/svc_xprt.h> | ||
| 21 | 22 | ||
| 22 | /* | 23 | /* |
| 23 | * Declare the debug flags here | 24 | * Declare the debug flags here |
| @@ -55,6 +56,30 @@ rpc_unregister_sysctl(void) | |||
| 55 | } | 56 | } |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 59 | static int proc_do_xprt(ctl_table *table, int write, struct file *file, | ||
| 60 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
| 61 | { | ||
| 62 | char tmpbuf[256]; | ||
| 63 | int len; | ||
| 64 | if ((*ppos && !write) || !*lenp) { | ||
| 65 | *lenp = 0; | ||
| 66 | return 0; | ||
| 67 | } | ||
| 68 | if (write) | ||
| 69 | return -EINVAL; | ||
| 70 | else { | ||
| 71 | len = svc_print_xprts(tmpbuf, sizeof(tmpbuf)); | ||
| 72 | if (!access_ok(VERIFY_WRITE, buffer, len)) | ||
| 73 | return -EFAULT; | ||
| 74 | |||
| 75 | if (__copy_to_user(buffer, tmpbuf, len)) | ||
| 76 | return -EFAULT; | ||
| 77 | } | ||
| 78 | *lenp -= len; | ||
| 79 | *ppos += len; | ||
| 80 | return 0; | ||
| 81 | } | ||
| 82 | |||
| 58 | static int | 83 | static int |
| 59 | proc_dodebug(ctl_table *table, int write, struct file *file, | 84 | proc_dodebug(ctl_table *table, int write, struct file *file, |
| 60 | void __user *buffer, size_t *lenp, loff_t *ppos) | 85 | void __user *buffer, size_t *lenp, loff_t *ppos) |
| @@ -147,6 +172,12 @@ static ctl_table debug_table[] = { | |||
| 147 | .mode = 0644, | 172 | .mode = 0644, |
| 148 | .proc_handler = &proc_dodebug | 173 | .proc_handler = &proc_dodebug |
| 149 | }, | 174 | }, |
| 175 | { | ||
| 176 | .procname = "transports", | ||
| 177 | .maxlen = 256, | ||
| 178 | .mode = 0444, | ||
| 179 | .proc_handler = &proc_do_xprt, | ||
| 180 | }, | ||
| 150 | { .ctl_name = 0 } | 181 | { .ctl_name = 0 } |
| 151 | }; | 182 | }; |
| 152 | 183 | ||
