2009-04-03 19:42:37 +04:00
/* FS-Cache statistics viewing interface
*
* Copyright ( C ) 2007 Red Hat , Inc . All Rights Reserved .
* Written by David Howells ( dhowells @ redhat . com )
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
# define FSCACHE_DEBUG_LEVEL OPERATION
# include <linux/module.h>
# include <linux/proc_fs.h>
# include <linux/seq_file.h>
# include "internal.h"
/*
* initialise the / proc / fs / fscache / directory
*/
int __init fscache_proc_init ( void )
{
_enter ( " " ) ;
if ( ! proc_mkdir ( " fs/fscache " , NULL ) )
goto error_dir ;
# ifdef CONFIG_FSCACHE_STATS
if ( ! proc_create ( " fs/fscache/stats " , S_IFREG | 0444 , NULL ,
& fscache_stats_fops ) )
goto error_stats ;
# endif
# ifdef CONFIG_FSCACHE_HISTOGRAM
if ( ! proc_create ( " fs/fscache/histogram " , S_IFREG | 0444 , NULL ,
& fscache_histogram_fops ) )
goto error_histogram ;
# endif
2009-11-19 21:11:04 +03:00
# ifdef CONFIG_FSCACHE_OBJECT_LIST
if ( ! proc_create ( " fs/fscache/objects " , S_IFREG | 0444 , NULL ,
& fscache_objlist_fops ) )
goto error_objects ;
# endif
2009-04-03 19:42:37 +04:00
_leave ( " = 0 " ) ;
return 0 ;
2009-11-19 21:11:04 +03:00
# ifdef CONFIG_FSCACHE_OBJECT_LIST
error_objects :
# endif
2009-04-03 19:42:37 +04:00
# ifdef CONFIG_FSCACHE_HISTOGRAM
2009-11-19 21:11:04 +03:00
remove_proc_entry ( " fs/fscache/histogram " , NULL ) ;
2009-04-03 19:42:37 +04:00
error_histogram :
# endif
# ifdef CONFIG_FSCACHE_STATS
remove_proc_entry ( " fs/fscache/stats " , NULL ) ;
error_stats :
# endif
remove_proc_entry ( " fs/fscache " , NULL ) ;
error_dir :
_leave ( " = -ENOMEM " ) ;
return - ENOMEM ;
}
/*
* clean up the / proc / fs / fscache / directory
*/
void fscache_proc_cleanup ( void )
{
2009-11-19 21:11:04 +03:00
# ifdef CONFIG_FSCACHE_OBJECT_LIST
remove_proc_entry ( " fs/fscache/objects " , NULL ) ;
# endif
2009-04-03 19:42:37 +04:00
# ifdef CONFIG_FSCACHE_HISTOGRAM
remove_proc_entry ( " fs/fscache/histogram " , NULL ) ;
# endif
# ifdef CONFIG_FSCACHE_STATS
remove_proc_entry ( " fs/fscache/stats " , NULL ) ;
# endif
remove_proc_entry ( " fs/fscache " , NULL ) ;
}