diff options
author | Olaf Kirch <okir@suse.de> | 2006-10-04 02:16:03 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 07:55:18 -0700 |
commit | 460f5cac1e24e947509b6112c99c5bc9ff687b45 (patch) | |
tree | 135d63c8401c79513dd43efdd2faeae51b87c5dc | |
parent | 39be4502cb75dc26007fe1659735b26c8e63fcc6 (diff) | |
download | linux-stable-460f5cac1e24e947509b6112c99c5bc9ff687b45.tar.gz linux-stable-460f5cac1e24e947509b6112c99c5bc9ff687b45.tar.bz2 linux-stable-460f5cac1e24e947509b6112c99c5bc9ff687b45.zip |
[PATCH] knfsd: export nsm_local_state to user space via sysctl
Every NLM call includes the client's NSM state. Currently, the Linux client
always reports 0 - which seems not to cause any problems, but is not what the
protocol says.
This patch exposes the kernel's internal variable to user space via a sysctl,
which can be set at system boot time by statd.
Signed-off-by: Olaf Kirch <okir@suse.de>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | fs/lockd/mon.c | 2 | ||||
-rw-r--r-- | fs/lockd/svc.c | 9 | ||||
-rw-r--r-- | include/linux/lockd/sm_inter.h | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c index 709cf7c80545..e0179f8c327f 100644 --- a/fs/lockd/mon.c +++ b/fs/lockd/mon.c @@ -24,7 +24,7 @@ static struct rpc_program nsm_program; /* * Local NSM state */ -u32 nsm_local_state; +int nsm_local_state; /* * Common procedure for SM_MON/SM_UNMON calls diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index a3b7602cd383..634139232aaf 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -33,6 +33,7 @@ #include <linux/sunrpc/svcsock.h> #include <net/ip.h> #include <linux/lockd/lockd.h> +#include <linux/lockd/sm_inter.h> #include <linux/nfs.h> #define NLMDBG_FACILITY NLMDBG_SVC @@ -404,6 +405,14 @@ static ctl_table nlm_sysctls[] = { .mode = 0644, .proc_handler = &proc_dointvec, }, + { + .ctl_name = CTL_UNNUMBERED, + .procname = "nsm_local_state", + .data = &nsm_local_state, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, { .ctl_name = 0 } }; diff --git a/include/linux/lockd/sm_inter.h b/include/linux/lockd/sm_inter.h index daef509bb9b3..fc61d40964da 100644 --- a/include/linux/lockd/sm_inter.h +++ b/include/linux/lockd/sm_inter.h @@ -42,6 +42,6 @@ struct nsm_res { int nsm_monitor(struct nlm_host *); int nsm_unmonitor(struct nlm_host *); -extern u32 nsm_local_state; +extern int nsm_local_state; #endif /* LINUX_LOCKD_SM_INTER_H */ |