| // 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); |
| } |