mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
nfsd: make svc_stat per-network namespace instead of global
The final bit of stats that is global is the rpc svc_stat. Move this into the nfsd_net struct and use that everywhere instead of the global struct. Remove the unused global struct. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
e41ee44cc6
commit
16fb9808ab
@ -14,6 +14,7 @@
|
|||||||
#include <linux/nfs4.h>
|
#include <linux/nfs4.h>
|
||||||
#include <linux/percpu_counter.h>
|
#include <linux/percpu_counter.h>
|
||||||
#include <linux/siphash.h>
|
#include <linux/siphash.h>
|
||||||
|
#include <linux/sunrpc/stats.h>
|
||||||
|
|
||||||
/* Hash tables for nfs4_clientid state */
|
/* Hash tables for nfs4_clientid state */
|
||||||
#define CLIENT_HASH_BITS 4
|
#define CLIENT_HASH_BITS 4
|
||||||
@ -179,6 +180,9 @@ struct nfsd_net {
|
|||||||
/* Per-netns stats counters */
|
/* Per-netns stats counters */
|
||||||
struct percpu_counter counter[NFSD_STATS_COUNTERS_NUM];
|
struct percpu_counter counter[NFSD_STATS_COUNTERS_NUM];
|
||||||
|
|
||||||
|
/* sunrpc svc stats */
|
||||||
|
struct svc_stat nfsd_svcstats;
|
||||||
|
|
||||||
/* longest hash chain seen */
|
/* longest hash chain seen */
|
||||||
unsigned int longest_chain;
|
unsigned int longest_chain;
|
||||||
|
|
||||||
|
@ -1674,6 +1674,8 @@ static __net_init int nfsd_net_init(struct net *net)
|
|||||||
retval = nfsd_stat_counters_init(nn);
|
retval = nfsd_stat_counters_init(nn);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto out_repcache_error;
|
goto out_repcache_error;
|
||||||
|
memset(&nn->nfsd_svcstats, 0, sizeof(nn->nfsd_svcstats));
|
||||||
|
nn->nfsd_svcstats.program = &nfsd_program;
|
||||||
nn->nfsd_versions = NULL;
|
nn->nfsd_versions = NULL;
|
||||||
nn->nfsd4_minorversions = NULL;
|
nn->nfsd4_minorversions = NULL;
|
||||||
nfsd4_init_leases_net(nn);
|
nfsd4_init_leases_net(nn);
|
||||||
|
@ -661,7 +661,7 @@ int nfsd_create_serv(struct net *net)
|
|||||||
if (nfsd_max_blksize == 0)
|
if (nfsd_max_blksize == 0)
|
||||||
nfsd_max_blksize = nfsd_get_default_max_blksize();
|
nfsd_max_blksize = nfsd_get_default_max_blksize();
|
||||||
nfsd_reset_versions(nn);
|
nfsd_reset_versions(nn);
|
||||||
serv = svc_create_pooled(&nfsd_program, &nfsd_svcstats,
|
serv = svc_create_pooled(&nfsd_program, &nn->nfsd_svcstats,
|
||||||
nfsd_max_blksize, nfsd);
|
nfsd_max_blksize, nfsd);
|
||||||
if (serv == NULL)
|
if (serv == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -27,10 +27,6 @@
|
|||||||
|
|
||||||
#include "nfsd.h"
|
#include "nfsd.h"
|
||||||
|
|
||||||
struct svc_stat nfsd_svcstats = {
|
|
||||||
.program = &nfsd_program,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int nfsd_show(struct seq_file *seq, void *v)
|
static int nfsd_show(struct seq_file *seq, void *v)
|
||||||
{
|
{
|
||||||
struct net *net = pde_data(file_inode(seq->file));
|
struct net *net = pde_data(file_inode(seq->file));
|
||||||
@ -56,7 +52,7 @@ static int nfsd_show(struct seq_file *seq, void *v)
|
|||||||
seq_puts(seq, "\nra 0 0 0 0 0 0 0 0 0 0 0 0\n");
|
seq_puts(seq, "\nra 0 0 0 0 0 0 0 0 0 0 0 0\n");
|
||||||
|
|
||||||
/* show my rpc info */
|
/* show my rpc info */
|
||||||
svc_seq_show(seq, &nfsd_svcstats);
|
svc_seq_show(seq, &nn->nfsd_svcstats);
|
||||||
|
|
||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
/* Show count for individual nfsv4 operations */
|
/* Show count for individual nfsv4 operations */
|
||||||
@ -121,7 +117,9 @@ void nfsd_stat_counters_destroy(struct nfsd_net *nn)
|
|||||||
|
|
||||||
void nfsd_proc_stat_init(struct net *net)
|
void nfsd_proc_stat_init(struct net *net)
|
||||||
{
|
{
|
||||||
svc_proc_register(net, &nfsd_svcstats, &nfsd_proc_ops);
|
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
||||||
|
|
||||||
|
svc_proc_register(net, &nn->nfsd_svcstats, &nfsd_proc_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nfsd_proc_stat_shutdown(struct net *net)
|
void nfsd_proc_stat_shutdown(struct net *net)
|
||||||
|
@ -10,8 +10,6 @@
|
|||||||
#include <uapi/linux/nfsd/stats.h>
|
#include <uapi/linux/nfsd/stats.h>
|
||||||
#include <linux/percpu_counter.h>
|
#include <linux/percpu_counter.h>
|
||||||
|
|
||||||
extern struct svc_stat nfsd_svcstats;
|
|
||||||
|
|
||||||
int nfsd_percpu_counters_init(struct percpu_counter *counters, int num);
|
int nfsd_percpu_counters_init(struct percpu_counter *counters, int num);
|
||||||
void nfsd_percpu_counters_reset(struct percpu_counter *counters, int num);
|
void nfsd_percpu_counters_reset(struct percpu_counter *counters, int num);
|
||||||
void nfsd_percpu_counters_destroy(struct percpu_counter *counters, int num);
|
void nfsd_percpu_counters_destroy(struct percpu_counter *counters, int num);
|
||||||
|
Loading…
Reference in New Issue
Block a user