nfsd: add new reply_cache_stats file in nfsdfs
For presenting statistics relating to duplicate reply cache. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
6c6910cd4d
commit
a2f999a37e
@ -82,6 +82,7 @@ int nfsd_reply_cache_init(void);
|
|||||||
void nfsd_reply_cache_shutdown(void);
|
void nfsd_reply_cache_shutdown(void);
|
||||||
int nfsd_cache_lookup(struct svc_rqst *);
|
int nfsd_cache_lookup(struct svc_rqst *);
|
||||||
void nfsd_cache_update(struct svc_rqst *, int, __be32 *);
|
void nfsd_cache_update(struct svc_rqst *, int, __be32 *);
|
||||||
|
int nfsd_reply_cache_stats_open(struct inode *, struct file *);
|
||||||
|
|
||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
void nfsd4_set_statp(struct svc_rqst *rqstp, __be32 *statp);
|
void nfsd4_set_statp(struct svc_rqst *rqstp, __be32 *statp);
|
||||||
|
@ -556,3 +556,28 @@ nfsd_cache_append(struct svc_rqst *rqstp, struct kvec *data)
|
|||||||
vec->iov_len += data->iov_len;
|
vec->iov_len += data->iov_len;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that fields may be added, removed or reordered in the future. Programs
|
||||||
|
* scraping this file for info should test the labels to ensure they're
|
||||||
|
* getting the correct field.
|
||||||
|
*/
|
||||||
|
static int nfsd_reply_cache_stats_show(struct seq_file *m, void *v)
|
||||||
|
{
|
||||||
|
spin_lock(&cache_lock);
|
||||||
|
seq_printf(m, "max entries: %u\n", max_drc_entries);
|
||||||
|
seq_printf(m, "num entries: %u\n", num_drc_entries);
|
||||||
|
seq_printf(m, "hash buckets: %u\n", HASHSIZE);
|
||||||
|
seq_printf(m, "mem usage: %u\n", drc_mem_usage);
|
||||||
|
seq_printf(m, "cache hits: %u\n", nfsdstats.rchits);
|
||||||
|
seq_printf(m, "cache misses: %u\n", nfsdstats.rcmisses);
|
||||||
|
seq_printf(m, "not cached: %u\n", nfsdstats.rcnocache);
|
||||||
|
seq_printf(m, "payload misses: %u\n", payload_misses);
|
||||||
|
spin_unlock(&cache_lock);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nfsd_reply_cache_stats_open(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
return single_open(file, nfsd_reply_cache_stats_show, NULL);
|
||||||
|
}
|
||||||
|
@ -35,6 +35,7 @@ enum {
|
|||||||
NFSD_Threads,
|
NFSD_Threads,
|
||||||
NFSD_Pool_Threads,
|
NFSD_Pool_Threads,
|
||||||
NFSD_Pool_Stats,
|
NFSD_Pool_Stats,
|
||||||
|
NFSD_Reply_Cache_Stats,
|
||||||
NFSD_Versions,
|
NFSD_Versions,
|
||||||
NFSD_Ports,
|
NFSD_Ports,
|
||||||
NFSD_MaxBlkSize,
|
NFSD_MaxBlkSize,
|
||||||
@ -212,6 +213,13 @@ static const struct file_operations pool_stats_operations = {
|
|||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct file_operations reply_cache_stats_operations = {
|
||||||
|
.open = nfsd_reply_cache_stats_open,
|
||||||
|
.read = seq_read,
|
||||||
|
.llseek = seq_lseek,
|
||||||
|
.release = single_release,
|
||||||
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/*
|
/*
|
||||||
* payload - write methods
|
* payload - write methods
|
||||||
@ -1047,6 +1055,7 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
|
|||||||
[NFSD_Threads] = {"threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
[NFSD_Threads] = {"threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
[NFSD_Pool_Threads] = {"pool_threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
[NFSD_Pool_Threads] = {"pool_threads", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
[NFSD_Pool_Stats] = {"pool_stats", &pool_stats_operations, S_IRUGO},
|
[NFSD_Pool_Stats] = {"pool_stats", &pool_stats_operations, S_IRUGO},
|
||||||
|
[NFSD_Reply_Cache_Stats] = {"reply_cache_stats", &reply_cache_stats_operations, S_IRUGO},
|
||||||
[NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR},
|
[NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
[NFSD_Ports] = {"portlist", &transaction_ops, S_IWUSR|S_IRUGO},
|
[NFSD_Ports] = {"portlist", &transaction_ops, S_IWUSR|S_IRUGO},
|
||||||
[NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO},
|
[NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user