| // 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" | |
| /* | |
| * Add files to /proc/fs/netfs/. | |
| */ | |
| int __init fscache_proc_init(void) | |
| { | |
| if (!proc_symlink("fs/fscache", NULL, "netfs")) | |
| goto error_sym; | |
| if (!proc_create_seq("fs/netfs/caches", S_IFREG | 0444, NULL, | |
| &fscache_caches_seq_ops)) | |
| goto error; | |
| if (!proc_create_seq("fs/netfs/volumes", S_IFREG | 0444, NULL, | |
| &fscache_volumes_seq_ops)) | |
| goto error; | |
| if (!proc_create_seq("fs/netfs/cookies", S_IFREG | 0444, NULL, | |
| &fscache_cookies_seq_ops)) | |
| goto error; | |
| return 0; | |
| error: | |
| remove_proc_entry("fs/fscache", NULL); | |
| error_sym: | |
| return -ENOMEM; | |
| } | |
| /* | |
| * Clean up the /proc/fs/fscache symlink. | |
| */ | |
| void fscache_proc_cleanup(void) | |
| { | |
| remove_proc_subtree("fs/fscache", NULL); | |
| } |