1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* FS-Cache statistics viewing interface 3 * 4 * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8 #define FSCACHE_DEBUG_LEVEL CACHE 9 #include <linux/module.h> 10 #include <linux/proc_fs.h> 11 #include <linux/seq_file.h> 12 #include "internal.h" 13 14 /* 15 * initialise the /proc/fs/fscache/ directory 16 */ 17 int __init fscache_proc_init(void) 18 { 19 if (!proc_mkdir("fs/fscache", NULL)) 20 goto error_dir; 21 22 if (!proc_create_seq("fs/fscache/caches", S_IFREG | 0444, NULL, 23 &fscache_caches_seq_ops)) 24 goto error; 25 26 if (!proc_create_seq("fs/fscache/volumes", S_IFREG | 0444, NULL, 27 &fscache_volumes_seq_ops)) 28 goto error; 29 30 if (!proc_create_seq("fs/fscache/cookies", S_IFREG | 0444, NULL, 31 &fscache_cookies_seq_ops)) 32 goto error; 33 34 #ifdef CONFIG_FSCACHE_STATS 35 if (!proc_create_single("fs/fscache/stats", S_IFREG | 0444, NULL, 36 fscache_stats_show)) 37 goto error; 38 #endif 39 40 return 0; 41 42 error: 43 remove_proc_entry("fs/fscache", NULL); 44 error_dir: 45 return -ENOMEM; 46 } 47 48 /* 49 * clean up the /proc/fs/fscache/ directory 50 */ 51 void fscache_proc_cleanup(void) 52 { 53 remove_proc_subtree("fs/fscache", NULL); 54 } 55