2019-05-27 09:55:01 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
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 )
*/
# 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
2018-05-15 16:57:23 +03:00
if ( ! proc_create_single ( " fs/fscache/stats " , S_IFREG | 0444 , NULL ,
fscache_stats_show ) )
2009-04-03 19:42:37 +04:00
goto error_stats ;
# endif
# ifdef CONFIG_FSCACHE_HISTOGRAM
2018-04-13 20:44:18 +03:00
if ( ! proc_create_seq ( " fs/fscache/histogram " , S_IFREG | 0444 , NULL ,
& fscache_histogram_ops ) )
2009-04-03 19:42:37 +04:00
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 ,
2020-02-04 04:37:17 +03:00
& fscache_objlist_proc_ops ) )
2009-11-19 21:11:04 +03:00
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 ) ;
}