diff options
author | Christoph Hellwig <hch@lst.de> | 2017-05-08 17:40:27 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2017-05-15 11:42:30 -0400 |
commit | 7fd38af9cae6aef1dfd28a7d1bd214eb5ddb7d53 (patch) | |
tree | 394d5e146fc57c81264231b0ee58e5a23379f6ea | |
parent | eb69853da9459280d89876cfc3da11292e59f7af (diff) |
sunrpc: move pc_count out of struct svc_procinfo
pc_count is the only writeable memeber of struct svc_procinfo, which is
a good candidate to be const-ified as it contains function pointers.
This patch moves it into out out struct svc_procinfo, and into a
separate writable array that is pointed to by struct svc_version.
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | fs/lockd/svc.c | 6 | ||||
-rw-r--r-- | fs/nfs/callback_xdr.c | 4 | ||||
-rw-r--r-- | fs/nfsd/nfs2acl.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfs3acl.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfs3proc.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfs4proc.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfsproc.c | 2 | ||||
-rw-r--r-- | include/linux/sunrpc/svc.h | 2 | ||||
-rw-r--r-- | net/sunrpc/stats.c | 11 | ||||
-rw-r--r-- | net/sunrpc/svc.c | 2 |
10 files changed, 28 insertions, 7 deletions
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index 5d481e8a1b5d..cc6abe6280bc 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
@@ -739,23 +739,29 @@ module_exit(exit_nlm); | |||
739 | /* | 739 | /* |
740 | * Define NLM program and procedures | 740 | * Define NLM program and procedures |
741 | */ | 741 | */ |
742 | static unsigned int nlmsvc_version1_count[17]; | ||
742 | static struct svc_version nlmsvc_version1 = { | 743 | static struct svc_version nlmsvc_version1 = { |
743 | .vs_vers = 1, | 744 | .vs_vers = 1, |
744 | .vs_nproc = 17, | 745 | .vs_nproc = 17, |
745 | .vs_proc = nlmsvc_procedures, | 746 | .vs_proc = nlmsvc_procedures, |
747 | .vs_count = nlmsvc_version1_count, | ||
746 | .vs_xdrsize = NLMSVC_XDRSIZE, | 748 | .vs_xdrsize = NLMSVC_XDRSIZE, |
747 | }; | 749 | }; |
750 | static unsigned int nlmsvc_version3_count[24]; | ||
748 | static struct svc_version nlmsvc_version3 = { | 751 | static struct svc_version nlmsvc_version3 = { |
749 | .vs_vers = 3, | 752 | .vs_vers = 3, |
750 | .vs_nproc = 24, | 753 | .vs_nproc = 24, |
751 | .vs_proc = nlmsvc_procedures, | 754 | .vs_proc = nlmsvc_procedures, |
755 | .vs_count = nlmsvc_version3_count, | ||
752 | .vs_xdrsize = NLMSVC_XDRSIZE, | 756 | .vs_xdrsize = NLMSVC_XDRSIZE, |
753 | }; | 757 | }; |
754 | #ifdef CONFIG_LOCKD_V4 | 758 | #ifdef CONFIG_LOCKD_V4 |
759 | static unsigned int nlmsvc_version4_count[24]; | ||
755 | static struct svc_version nlmsvc_version4 = { | 760 | static struct svc_version nlmsvc_version4 = { |
756 | .vs_vers = 4, | 761 | .vs_vers = 4, |
757 | .vs_nproc = 24, | 762 | .vs_nproc = 24, |
758 | .vs_proc = nlmsvc_procedures4, | 763 | .vs_proc = nlmsvc_procedures4, |
764 | .vs_count = nlmsvc_version4_count, | ||
759 | .vs_xdrsize = NLMSVC_XDRSIZE, | 765 | .vs_xdrsize = NLMSVC_XDRSIZE, |
760 | }; | 766 | }; |
761 | #endif | 767 | #endif |
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index acf75dc63e14..ecd46b8c0985 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c | |||
@@ -1011,20 +1011,24 @@ static struct svc_procedure nfs4_callback_procedures1[] = { | |||
1011 | } | 1011 | } |
1012 | }; | 1012 | }; |
1013 | 1013 | ||
1014 | static unsigned int nfs4_callback_count1[ARRAY_SIZE(nfs4_callback_procedures1)]; | ||
1014 | struct svc_version nfs4_callback_version1 = { | 1015 | struct svc_version nfs4_callback_version1 = { |
1015 | .vs_vers = 1, | 1016 | .vs_vers = 1, |
1016 | .vs_nproc = ARRAY_SIZE(nfs4_callback_procedures1), | 1017 | .vs_nproc = ARRAY_SIZE(nfs4_callback_procedures1), |
1017 | .vs_proc = nfs4_callback_procedures1, | 1018 | .vs_proc = nfs4_callback_procedures1, |
1019 | .vs_count = nfs4_callback_count1, | ||
1018 | .vs_xdrsize = NFS4_CALLBACK_XDRSIZE, | 1020 | .vs_xdrsize = NFS4_CALLBACK_XDRSIZE, |
1019 | .vs_dispatch = NULL, | 1021 | .vs_dispatch = NULL, |
1020 | .vs_hidden = true, | 1022 | .vs_hidden = true, |
1021 | .vs_need_cong_ctrl = true, | 1023 | .vs_need_cong_ctrl = true, |
1022 | }; | 1024 | }; |
1023 | 1025 | ||
1026 | static unsigned int nfs4_callback_count4[ARRAY_SIZE(nfs4_callback_procedures1)]; | ||
1024 | struct svc_version nfs4_callback_version4 = { | 1027 | struct svc_version nfs4_callback_version4 = { |
1025 | .vs_vers = 4, | 1028 | .vs_vers = 4, |
1026 | .vs_nproc = ARRAY_SIZE(nfs4_callback_procedures1), | 1029 | .vs_nproc = ARRAY_SIZE(nfs4_callback_procedures1), |
1027 | .vs_proc = nfs4_callback_procedures1, | 1030 | .vs_proc = nfs4_callback_procedures1, |
1031 | .vs_count = nfs4_callback_count4, | ||
1028 | .vs_xdrsize = NFS4_CALLBACK_XDRSIZE, | 1032 | .vs_xdrsize = NFS4_CALLBACK_XDRSIZE, |
1029 | .vs_dispatch = NULL, | 1033 | .vs_dispatch = NULL, |
1030 | .vs_hidden = true, | 1034 | .vs_hidden = true, |
diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index fc6b179c8fff..026edfe73fd5 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c | |||
@@ -378,10 +378,12 @@ static struct svc_procedure nfsd_acl_procedures2[] = { | |||
378 | PROC(access, access, access, access, RC_NOCACHE, ST+AT+1), | 378 | PROC(access, access, access, access, RC_NOCACHE, ST+AT+1), |
379 | }; | 379 | }; |
380 | 380 | ||
381 | static unsigned int nfsd_acl_count2[ARRAY_SIZE(nfsd_acl_procedures2)]; | ||
381 | struct svc_version nfsd_acl_version2 = { | 382 | struct svc_version nfsd_acl_version2 = { |
382 | .vs_vers = 2, | 383 | .vs_vers = 2, |
383 | .vs_nproc = 5, | 384 | .vs_nproc = 5, |
384 | .vs_proc = nfsd_acl_procedures2, | 385 | .vs_proc = nfsd_acl_procedures2, |
386 | .vs_count = nfsd_acl_count2, | ||
385 | .vs_dispatch = nfsd_dispatch, | 387 | .vs_dispatch = nfsd_dispatch, |
386 | .vs_xdrsize = NFS3_SVC_XDRSIZE, | 388 | .vs_xdrsize = NFS3_SVC_XDRSIZE, |
387 | }; | 389 | }; |
diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c index 9437b758cbfd..73c0970ccefb 100644 --- a/fs/nfsd/nfs3acl.c +++ b/fs/nfsd/nfs3acl.c | |||
@@ -263,10 +263,12 @@ static struct svc_procedure nfsd_acl_procedures3[] = { | |||
263 | PROC(setacl, setacl, setacl, fhandle, RC_NOCACHE, ST+pAT), | 263 | PROC(setacl, setacl, setacl, fhandle, RC_NOCACHE, ST+pAT), |
264 | }; | 264 | }; |
265 | 265 | ||
266 | static unsigned int nfsd_acl_count3[ARRAY_SIZE(nfsd_acl_procedures3)]; | ||
266 | struct svc_version nfsd_acl_version3 = { | 267 | struct svc_version nfsd_acl_version3 = { |
267 | .vs_vers = 3, | 268 | .vs_vers = 3, |
268 | .vs_nproc = 3, | 269 | .vs_nproc = 3, |
269 | .vs_proc = nfsd_acl_procedures3, | 270 | .vs_proc = nfsd_acl_procedures3, |
271 | .vs_count = nfsd_acl_count3, | ||
270 | .vs_dispatch = nfsd_dispatch, | 272 | .vs_dispatch = nfsd_dispatch, |
271 | .vs_xdrsize = NFS3_SVC_XDRSIZE, | 273 | .vs_xdrsize = NFS3_SVC_XDRSIZE, |
272 | }; | 274 | }; |
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 17c90c41a3a6..b5823802e278 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c | |||
@@ -890,10 +890,12 @@ static struct svc_procedure nfsd_procedures3[22] = { | |||
890 | }, | 890 | }, |
891 | }; | 891 | }; |
892 | 892 | ||
893 | static unsigned int nfsd_count3[ARRAY_SIZE(nfsd_procedures3)]; | ||
893 | struct svc_version nfsd_version3 = { | 894 | struct svc_version nfsd_version3 = { |
894 | .vs_vers = 3, | 895 | .vs_vers = 3, |
895 | .vs_nproc = 22, | 896 | .vs_nproc = 22, |
896 | .vs_proc = nfsd_procedures3, | 897 | .vs_proc = nfsd_procedures3, |
898 | .vs_count = nfsd_count3, | ||
897 | .vs_dispatch = nfsd_dispatch, | 899 | .vs_dispatch = nfsd_dispatch, |
898 | .vs_xdrsize = NFS3_SVC_XDRSIZE, | 900 | .vs_xdrsize = NFS3_SVC_XDRSIZE, |
899 | }; | 901 | }; |
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index a947dcef5e4e..bad5fec0ebc7 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c | |||
@@ -2554,10 +2554,12 @@ static struct svc_procedure nfsd_procedures4[2] = { | |||
2554 | }, | 2554 | }, |
2555 | }; | 2555 | }; |
2556 | 2556 | ||
2557 | static unsigned int nfsd_count3[ARRAY_SIZE(nfsd_procedures4)]; | ||
2557 | struct svc_version nfsd_version4 = { | 2558 | struct svc_version nfsd_version4 = { |
2558 | .vs_vers = 4, | 2559 | .vs_vers = 4, |
2559 | .vs_nproc = 2, | 2560 | .vs_nproc = 2, |
2560 | .vs_proc = nfsd_procedures4, | 2561 | .vs_proc = nfsd_procedures4, |
2562 | .vs_count = nfsd_count3, | ||
2561 | .vs_dispatch = nfsd_dispatch, | 2563 | .vs_dispatch = nfsd_dispatch, |
2562 | .vs_xdrsize = NFS4_SVC_XDRSIZE, | 2564 | .vs_xdrsize = NFS4_SVC_XDRSIZE, |
2563 | .vs_rpcb_optnl = true, | 2565 | .vs_rpcb_optnl = true, |
diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 0ef88d0e67d9..44b157553733 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c | |||
@@ -743,10 +743,12 @@ static struct svc_procedure nfsd_procedures2[18] = { | |||
743 | }; | 743 | }; |
744 | 744 | ||
745 | 745 | ||
746 | static unsigned int nfsd_count2[ARRAY_SIZE(nfsd_procedures2)]; | ||
746 | struct svc_version nfsd_version2 = { | 747 | struct svc_version nfsd_version2 = { |
747 | .vs_vers = 2, | 748 | .vs_vers = 2, |
748 | .vs_nproc = 18, | 749 | .vs_nproc = 18, |
749 | .vs_proc = nfsd_procedures2, | 750 | .vs_proc = nfsd_procedures2, |
751 | .vs_count = nfsd_count2, | ||
750 | .vs_dispatch = nfsd_dispatch, | 752 | .vs_dispatch = nfsd_dispatch, |
751 | .vs_xdrsize = NFS2_SVC_XDRSIZE, | 753 | .vs_xdrsize = NFS2_SVC_XDRSIZE, |
752 | }; | 754 | }; |
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 6cfe41db7f31..9f00384153f4 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h | |||
@@ -397,6 +397,7 @@ struct svc_version { | |||
397 | u32 vs_vers; /* version number */ | 397 | u32 vs_vers; /* version number */ |
398 | u32 vs_nproc; /* number of procedures */ | 398 | u32 vs_nproc; /* number of procedures */ |
399 | struct svc_procedure * vs_proc; /* per-procedure info */ | 399 | struct svc_procedure * vs_proc; /* per-procedure info */ |
400 | unsigned int *vs_count; /* call counts */ | ||
400 | u32 vs_xdrsize; /* xdrsize needed for this version */ | 401 | u32 vs_xdrsize; /* xdrsize needed for this version */ |
401 | 402 | ||
402 | /* Don't register with rpcbind */ | 403 | /* Don't register with rpcbind */ |
@@ -429,7 +430,6 @@ struct svc_procedure { | |||
429 | void (*pc_release)(struct svc_rqst *); | 430 | void (*pc_release)(struct svc_rqst *); |
430 | unsigned int pc_argsize; /* argument struct size */ | 431 | unsigned int pc_argsize; /* argument struct size */ |
431 | unsigned int pc_ressize; /* result struct size */ | 432 | unsigned int pc_ressize; /* result struct size */ |
432 | unsigned int pc_count; /* call count */ | ||
433 | unsigned int pc_cachetype; /* cache info (NFS) */ | 433 | unsigned int pc_cachetype; /* cache info (NFS) */ |
434 | unsigned int pc_xdrressize; /* maximum size of XDR reply */ | 434 | unsigned int pc_xdrressize; /* maximum size of XDR reply */ |
435 | }; | 435 | }; |
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c index 8b6c35ae1d57..1e671333c3d5 100644 --- a/net/sunrpc/stats.c +++ b/net/sunrpc/stats.c | |||
@@ -77,9 +77,9 @@ static const struct file_operations rpc_proc_fops = { | |||
77 | /* | 77 | /* |
78 | * Get RPC server stats | 78 | * Get RPC server stats |
79 | */ | 79 | */ |
80 | void svc_seq_show(struct seq_file *seq, const struct svc_stat *statp) { | 80 | void svc_seq_show(struct seq_file *seq, const struct svc_stat *statp) |
81 | { | ||
81 | const struct svc_program *prog = statp->program; | 82 | const struct svc_program *prog = statp->program; |
82 | const struct svc_procedure *proc; | ||
83 | const struct svc_version *vers; | 83 | const struct svc_version *vers; |
84 | unsigned int i, j; | 84 | unsigned int i, j; |
85 | 85 | ||
@@ -98,11 +98,12 @@ void svc_seq_show(struct seq_file *seq, const struct svc_stat *statp) { | |||
98 | statp->rpcbadclnt); | 98 | statp->rpcbadclnt); |
99 | 99 | ||
100 | for (i = 0; i < prog->pg_nvers; i++) { | 100 | for (i = 0; i < prog->pg_nvers; i++) { |
101 | if (!(vers = prog->pg_vers[i]) || !(proc = vers->vs_proc)) | 101 | vers = prog->pg_vers[i]; |
102 | if (!vers) | ||
102 | continue; | 103 | continue; |
103 | seq_printf(seq, "proc%d %u", i, vers->vs_nproc); | 104 | seq_printf(seq, "proc%d %u", i, vers->vs_nproc); |
104 | for (j = 0; j < vers->vs_nproc; j++, proc++) | 105 | for (j = 0; j < vers->vs_nproc; j++) |
105 | seq_printf(seq, " %u", proc->pc_count); | 106 | seq_printf(seq, " %u", vers->vs_count[j]); |
106 | seq_putc(seq, '\n'); | 107 | seq_putc(seq, '\n'); |
107 | } | 108 | } |
108 | } | 109 | } |
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index aa643a29fdc6..6452592194ac 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c | |||
@@ -1261,7 +1261,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv) | |||
1261 | svc_putnl(resv, RPC_SUCCESS); | 1261 | svc_putnl(resv, RPC_SUCCESS); |
1262 | 1262 | ||
1263 | /* Bump per-procedure stats counter */ | 1263 | /* Bump per-procedure stats counter */ |
1264 | procp->pc_count++; | 1264 | versp->vs_count[proc]++; |
1265 | 1265 | ||
1266 | /* Initialize storage for argp and resp */ | 1266 | /* Initialize storage for argp and resp */ |
1267 | memset(rqstp->rq_argp, 0, procp->pc_argsize); | 1267 | memset(rqstp->rq_argp, 0, procp->pc_argsize); |