1 /* FS-Cache statistics viewing interface 2 * 3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 9 * 2 of the License, or (at your option) any later version. 10 */ 11 12 #define FSCACHE_DEBUG_LEVEL OPERATION 13 #include <linux/module.h> 14 #include <linux/proc_fs.h> 15 #include <linux/seq_file.h> 16 #include "internal.h" 17 18 /* 19 * initialise the /proc/fs/fscache/ directory 20 */ 21 int __init fscache_proc_init(void) 22 { 23 _enter(""); 24 25 if (!proc_mkdir("fs/fscache", NULL)) 26 goto error_dir; 27 28 #ifdef CONFIG_FSCACHE_STATS 29 if (!proc_create("fs/fscache/stats", S_IFREG | 0444, NULL, 30 &fscache_stats_fops)) 31 goto error_stats; 32 #endif 33 34 #ifdef CONFIG_FSCACHE_HISTOGRAM 35 if (!proc_create("fs/fscache/histogram", S_IFREG | 0444, NULL, 36 &fscache_histogram_fops)) 37 goto error_histogram; 38 #endif 39 40 _leave(" = 0"); 41 return 0; 42 43 #ifdef CONFIG_FSCACHE_HISTOGRAM 44 error_histogram: 45 #endif 46 #ifdef CONFIG_FSCACHE_STATS 47 remove_proc_entry("fs/fscache/stats", NULL); 48 error_stats: 49 #endif 50 remove_proc_entry("fs/fscache", NULL); 51 error_dir: 52 _leave(" = -ENOMEM"); 53 return -ENOMEM; 54 } 55 56 /* 57 * clean up the /proc/fs/fscache/ directory 58 */ 59 void fscache_proc_cleanup(void) 60 { 61 #ifdef CONFIG_FSCACHE_HISTOGRAM 62 remove_proc_entry("fs/fscache/histogram", NULL); 63 #endif 64 #ifdef CONFIG_FSCACHE_STATS 65 remove_proc_entry("fs/fscache/stats", NULL); 66 #endif 67 remove_proc_entry("fs/fscache", NULL); 68 } 69