Commit | Line | Data |
---|---|---|
1e1236b8 DH |
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 | ||
9549332d DH |
22 | if (!proc_create_seq("fs/fscache/caches", S_IFREG | 0444, NULL, |
23 | &fscache_caches_seq_ops)) | |
24 | goto error; | |
25 | ||
62ab6335 DH |
26 | if (!proc_create_seq("fs/fscache/volumes", S_IFREG | 0444, NULL, |
27 | &fscache_volumes_seq_ops)) | |
28 | goto error; | |
29 | ||
7f3283ab DH |
30 | if (!proc_create_seq("fs/fscache/cookies", S_IFREG | 0444, NULL, |
31 | &fscache_cookies_seq_ops)) | |
32 | goto error; | |
33 | ||
1e1236b8 DH |
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 | } |