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