| // SPDX-License-Identifier: GPL-2.0-or-later | |
| /* FS-Cache statistics viewing interface | |
| * | |
| * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. | |
| * Written by David Howells (dhowells@redhat.com) | |
| */ | |
| #define FSCACHE_DEBUG_LEVEL CACHE | |
| #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) | |
| { | |
| if (!proc_mkdir("fs/fscache", NULL)) | |
| goto error_dir; | |
| if (!proc_create_seq("fs/fscache/caches", S_IFREG | 0444, NULL, | |
| &fscache_caches_seq_ops)) | |
| goto error; | |
| if (!proc_create_seq("fs/fscache/volumes", S_IFREG | 0444, NULL, | |
| &fscache_volumes_seq_ops)) | |
| goto error; | |
| if (!proc_create_seq("fs/fscache/cookies", S_IFREG | 0444, NULL, | |
| &fscache_cookies_seq_ops)) | |
| goto error; | |
| #ifdef CONFIG_FSCACHE_STATS | |
| if (!proc_create_single("fs/fscache/stats", S_IFREG | 0444, NULL, | |
| fscache_stats_show)) | |
| goto error; | |
| #endif | |
| return 0; | |
| error: | |
| remove_proc_entry("fs/fscache", NULL); | |
| error_dir: | |
| return -ENOMEM; | |
| } | |
| /* | |
| * clean up the /proc/fs/fscache/ directory | |
| */ | |
| void fscache_proc_cleanup(void) | |
| { | |
| remove_proc_subtree("fs/fscache", NULL); | |
| } |