Commit 16fb9808 authored by Josef Bacik's avatar Josef Bacik Committed by Chuck Lever
Browse files

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: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent e41ee44c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/nfs4.h>
#include <linux/percpu_counter.h>
#include <linux/siphash.h>
#include <linux/sunrpc/stats.h>

/* Hash tables for nfs4_clientid state */
#define CLIENT_HASH_BITS                 4
@@ -179,6 +180,9 @@ struct nfsd_net {
	/* Per-netns stats counters */
	struct percpu_counter    counter[NFSD_STATS_COUNTERS_NUM];

	/* sunrpc svc stats */
	struct svc_stat          nfsd_svcstats;

	/* longest hash chain seen */
	unsigned int             longest_chain;

+2 −0
Original line number Diff line number Diff line
@@ -1674,6 +1674,8 @@ static __net_init int nfsd_net_init(struct net *net)
	retval = nfsd_stat_counters_init(nn);
	if (retval)
		goto out_repcache_error;
	memset(&nn->nfsd_svcstats, 0, sizeof(nn->nfsd_svcstats));
	nn->nfsd_svcstats.program = &nfsd_program;
	nn->nfsd_versions = NULL;
	nn->nfsd4_minorversions = NULL;
	nfsd4_init_leases_net(nn);
+1 −1
Original line number Diff line number Diff line
@@ -661,7 +661,7 @@ int nfsd_create_serv(struct net *net)
	if (nfsd_max_blksize == 0)
		nfsd_max_blksize = nfsd_get_default_max_blksize();
	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);
	if (serv == NULL)
		return -ENOMEM;
+4 −6
Original line number Diff line number Diff line
@@ -27,10 +27,6 @@

#include "nfsd.h"

struct svc_stat		nfsd_svcstats = {
	.program	= &nfsd_program,
};

static int nfsd_show(struct seq_file *seq, void *v)
{
	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");

	/* show my rpc info */
	svc_seq_show(seq, &nfsd_svcstats);
	svc_seq_show(seq, &nn->nfsd_svcstats);

#ifdef CONFIG_NFSD_V4
	/* 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)
{
	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)
+0 −2
Original line number Diff line number Diff line
@@ -10,8 +10,6 @@
#include <uapi/linux/nfsd/stats.h>
#include <linux/percpu_counter.h>

extern struct svc_stat		nfsd_svcstats;

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_destroy(struct percpu_counter *counters, int num);