[PATCH] seq_file conversion: coda
Compile-tested. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: <jaharkes@cs.cmu.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
85cc9b1144
commit
9bbf81e483
@ -15,6 +15,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/sysctl.h>
|
#include <linux/sysctl.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
@ -84,15 +85,11 @@ static int do_reset_coda_cache_inv_stats( ctl_table * table, int write,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int coda_vfs_stats_get_info( char * buffer, char ** start,
|
static int proc_vfs_stats_show(struct seq_file *m, void *v)
|
||||||
off_t offset, int length)
|
|
||||||
{
|
{
|
||||||
int len=0;
|
|
||||||
off_t begin;
|
|
||||||
struct coda_vfs_stats * ps = & coda_vfs_stat;
|
struct coda_vfs_stats * ps = & coda_vfs_stat;
|
||||||
|
|
||||||
/* this works as long as we are below 1024 characters! */
|
seq_printf(m,
|
||||||
len += sprintf( buffer,
|
|
||||||
"Coda VFS statistics\n"
|
"Coda VFS statistics\n"
|
||||||
"===================\n\n"
|
"===================\n\n"
|
||||||
"File Operations:\n"
|
"File Operations:\n"
|
||||||
@ -132,28 +129,14 @@ static int coda_vfs_stats_get_info( char * buffer, char ** start,
|
|||||||
ps->rmdir,
|
ps->rmdir,
|
||||||
ps->rename,
|
ps->rename,
|
||||||
ps->permission);
|
ps->permission);
|
||||||
|
return 0;
|
||||||
begin = offset;
|
|
||||||
*start = buffer + begin;
|
|
||||||
len -= begin;
|
|
||||||
|
|
||||||
if ( len > length )
|
|
||||||
len = length;
|
|
||||||
if ( len < 0 )
|
|
||||||
len = 0;
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int coda_cache_inv_stats_get_info( char * buffer, char ** start,
|
static int proc_cache_inv_stats_show(struct seq_file *m, void *v)
|
||||||
off_t offset, int length)
|
|
||||||
{
|
{
|
||||||
int len=0;
|
|
||||||
off_t begin;
|
|
||||||
struct coda_cache_inv_stats * ps = & coda_cache_inv_stat;
|
struct coda_cache_inv_stats * ps = & coda_cache_inv_stat;
|
||||||
|
|
||||||
/* this works as long as we are below 1024 characters! */
|
seq_printf(m,
|
||||||
len += sprintf( buffer,
|
|
||||||
"Coda cache invalidation statistics\n"
|
"Coda cache invalidation statistics\n"
|
||||||
"==================================\n\n"
|
"==================================\n\n"
|
||||||
"flush\t\t%9d\n"
|
"flush\t\t%9d\n"
|
||||||
@ -170,19 +153,35 @@ static int coda_cache_inv_stats_get_info( char * buffer, char ** start,
|
|||||||
ps->zap_vnode,
|
ps->zap_vnode,
|
||||||
ps->purge_fid,
|
ps->purge_fid,
|
||||||
ps->replace );
|
ps->replace );
|
||||||
|
return 0;
|
||||||
begin = offset;
|
|
||||||
*start = buffer + begin;
|
|
||||||
len -= begin;
|
|
||||||
|
|
||||||
if ( len > length )
|
|
||||||
len = length;
|
|
||||||
if ( len < 0 )
|
|
||||||
len = 0;
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int proc_vfs_stats_open(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
return single_open(file, proc_vfs_stats_show, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int proc_cache_inv_stats_open(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
return single_open(file, proc_cache_inv_stats_show, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct file_operations proc_vfs_stats_fops = {
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.open = proc_vfs_stats_open,
|
||||||
|
.read = seq_read,
|
||||||
|
.llseek = seq_lseek,
|
||||||
|
.release = single_release,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct file_operations proc_cache_inv_stats_fops = {
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.open = proc_cache_inv_stats_open,
|
||||||
|
.read = seq_read,
|
||||||
|
.llseek = seq_lseek,
|
||||||
|
.release = single_release,
|
||||||
|
};
|
||||||
|
|
||||||
static ctl_table coda_table[] = {
|
static ctl_table coda_table[] = {
|
||||||
{CODA_TIMEOUT, "timeout", &coda_timeout, sizeof(int), 0644, NULL, &proc_dointvec},
|
{CODA_TIMEOUT, "timeout", &coda_timeout, sizeof(int), 0644, NULL, &proc_dointvec},
|
||||||
{CODA_HARD, "hard", &coda_hard, sizeof(int), 0644, NULL, &proc_dointvec},
|
{CODA_HARD, "hard", &coda_hard, sizeof(int), 0644, NULL, &proc_dointvec},
|
||||||
@ -212,9 +211,6 @@ static struct proc_dir_entry* proc_fs_coda;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define coda_proc_create(name,get_info) \
|
|
||||||
create_proc_info_entry(name, 0, proc_fs_coda, get_info)
|
|
||||||
|
|
||||||
void coda_sysctl_init(void)
|
void coda_sysctl_init(void)
|
||||||
{
|
{
|
||||||
reset_coda_vfs_stats();
|
reset_coda_vfs_stats();
|
||||||
@ -223,9 +219,15 @@ void coda_sysctl_init(void)
|
|||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
proc_fs_coda = proc_mkdir("coda", proc_root_fs);
|
proc_fs_coda = proc_mkdir("coda", proc_root_fs);
|
||||||
if (proc_fs_coda) {
|
if (proc_fs_coda) {
|
||||||
|
struct proc_dir_entry *pde;
|
||||||
|
|
||||||
proc_fs_coda->owner = THIS_MODULE;
|
proc_fs_coda->owner = THIS_MODULE;
|
||||||
coda_proc_create("vfs_stats", coda_vfs_stats_get_info);
|
pde = create_proc_entry("vfs_stats", 0, proc_fs_coda);
|
||||||
coda_proc_create("cache_inv_stats", coda_cache_inv_stats_get_info);
|
if (pde)
|
||||||
|
pde->proc_fops = &proc_vfs_stats_fops;
|
||||||
|
pde = create_proc_entry("cache_inv_stats", 0, proc_fs_coda);
|
||||||
|
if (pde)
|
||||||
|
pde->proc_fops = &proc_cache_inv_stats_fops;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user