Commit 7eb5b3e3 authored by David Howells's avatar David Howells

netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a symlink

Rename /proc/fs/fscache to "netfs" and make a symlink from fscache to that.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
cc: Christian Brauner <christian@brauner.io>
cc: linux-fsdevel@vger.kernel.org
cc: linux-cachefs@redhat.com
parent 4498a8ec
...@@ -62,7 +62,7 @@ unsigned int fscache_hash(unsigned int salt, const void *data, size_t len) ...@@ -62,7 +62,7 @@ unsigned int fscache_hash(unsigned int salt, const void *data, size_t len)
/* /*
* initialise the fs caching module * initialise the fs caching module
*/ */
static int __init fscache_init(void) int __init fscache_init(void)
{ {
int ret = -ENOMEM; int ret = -ENOMEM;
...@@ -94,12 +94,10 @@ static int __init fscache_init(void) ...@@ -94,12 +94,10 @@ static int __init fscache_init(void)
return ret; return ret;
} }
fs_initcall(fscache_init);
/* /*
* clean up on module removal * clean up on module removal
*/ */
static void __exit fscache_exit(void) void __exit fscache_exit(void)
{ {
_enter(""); _enter("");
...@@ -108,5 +106,3 @@ static void __exit fscache_exit(void) ...@@ -108,5 +106,3 @@ static void __exit fscache_exit(void)
destroy_workqueue(fscache_wq); destroy_workqueue(fscache_wq);
pr_notice("FS-Cache unloaded\n"); pr_notice("FS-Cache unloaded\n");
} }
module_exit(fscache_exit);
...@@ -12,41 +12,34 @@ ...@@ -12,41 +12,34 @@
#include "internal.h" #include "internal.h"
/* /*
* initialise the /proc/fs/fscache/ directory * Add files to /proc/fs/netfs/.
*/ */
int __init fscache_proc_init(void) int __init fscache_proc_init(void)
{ {
if (!proc_mkdir("fs/fscache", NULL)) if (!proc_symlink("fs/fscache", NULL, "../netfs"))
goto error_dir; goto error_sym;
if (!proc_create_seq("fs/fscache/caches", S_IFREG | 0444, NULL, if (!proc_create_seq("fs/netfs/caches", S_IFREG | 0444, NULL,
&fscache_caches_seq_ops)) &fscache_caches_seq_ops))
goto error; goto error;
if (!proc_create_seq("fs/fscache/volumes", S_IFREG | 0444, NULL, if (!proc_create_seq("fs/netfs/volumes", S_IFREG | 0444, NULL,
&fscache_volumes_seq_ops)) &fscache_volumes_seq_ops))
goto error; goto error;
if (!proc_create_seq("fs/fscache/cookies", S_IFREG | 0444, NULL, if (!proc_create_seq("fs/netfs/cookies", S_IFREG | 0444, NULL,
&fscache_cookies_seq_ops)) &fscache_cookies_seq_ops))
goto error; 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; return 0;
error: error:
remove_proc_entry("fs/fscache", NULL); remove_proc_entry("fs/fscache", NULL);
error_dir: error_sym:
return -ENOMEM; return -ENOMEM;
} }
/* /*
* clean up the /proc/fs/fscache/ directory * Clean up the /proc/fs/fscache symlink.
*/ */
void fscache_proc_cleanup(void) void fscache_proc_cleanup(void)
{ {
......
...@@ -52,7 +52,7 @@ EXPORT_SYMBOL(fscache_n_culled); ...@@ -52,7 +52,7 @@ EXPORT_SYMBOL(fscache_n_culled);
/* /*
* display the general statistics * display the general statistics
*/ */
int fscache_stats_show(struct seq_file *m, void *v) int fscache_stats_show(struct seq_file *m)
{ {
seq_puts(m, "FS-Cache statistics\n"); seq_puts(m, "FS-Cache statistics\n");
seq_printf(m, "Cookies: n=%d v=%d vcol=%u voom=%u\n", seq_printf(m, "Cookies: n=%d v=%d vcol=%u voom=%u\n",
...@@ -96,7 +96,5 @@ int fscache_stats_show(struct seq_file *m, void *v) ...@@ -96,7 +96,5 @@ int fscache_stats_show(struct seq_file *m, void *v)
seq_printf(m, "IO : rd=%u wr=%u\n", seq_printf(m, "IO : rd=%u wr=%u\n",
atomic_read(&fscache_n_read), atomic_read(&fscache_n_read),
atomic_read(&fscache_n_write)); atomic_read(&fscache_n_write));
netfs_stats_show(m);
return 0; return 0;
} }
...@@ -76,6 +76,7 @@ extern atomic_t netfs_n_rh_write_done; ...@@ -76,6 +76,7 @@ extern atomic_t netfs_n_rh_write_done;
extern atomic_t netfs_n_rh_write_failed; extern atomic_t netfs_n_rh_write_failed;
extern atomic_t netfs_n_rh_write_zskip; extern atomic_t netfs_n_rh_write_zskip;
int netfs_stats_show(struct seq_file *m, void *v);
static inline void netfs_stat(atomic_t *stat) static inline void netfs_stat(atomic_t *stat)
{ {
...@@ -166,6 +167,13 @@ static inline void fscache_see_cookie(struct fscache_cookie *cookie, ...@@ -166,6 +167,13 @@ static inline void fscache_see_cookie(struct fscache_cookie *cookie,
* fscache-main.c * fscache-main.c
*/ */
extern unsigned int fscache_hash(unsigned int salt, const void *data, size_t len); extern unsigned int fscache_hash(unsigned int salt, const void *data, size_t len);
#ifdef CONFIG_FSCACHE
int __init fscache_init(void);
void __exit fscache_exit(void);
#else
static inline int fscache_init(void) { return 0; }
static inline void fscache_exit(void) {}
#endif
/* /*
* fscache-proc.c * fscache-proc.c
...@@ -216,12 +224,14 @@ static inline void fscache_stat_d(atomic_t *stat) ...@@ -216,12 +224,14 @@ static inline void fscache_stat_d(atomic_t *stat)
#define __fscache_stat(stat) (stat) #define __fscache_stat(stat) (stat)
int fscache_stats_show(struct seq_file *m, void *v); int fscache_stats_show(struct seq_file *m);
#else #else
#define __fscache_stat(stat) (NULL) #define __fscache_stat(stat) (NULL)
#define fscache_stat(stat) do {} while (0) #define fscache_stat(stat) do {} while (0)
#define fscache_stat_d(stat) do {} while (0) #define fscache_stat_d(stat) do {} while (0)
static inline int fscache_stats_show(struct seq_file *m) { return 0; }
#endif #endif
/* /*
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include "internal.h" #include "internal.h"
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
#include <trace/events/netfs.h> #include <trace/events/netfs.h>
...@@ -19,3 +21,34 @@ unsigned netfs_debug; ...@@ -19,3 +21,34 @@ unsigned netfs_debug;
module_param_named(debug, netfs_debug, uint, S_IWUSR | S_IRUGO); module_param_named(debug, netfs_debug, uint, S_IWUSR | S_IRUGO);
MODULE_PARM_DESC(netfs_debug, "Netfs support debugging mask"); MODULE_PARM_DESC(netfs_debug, "Netfs support debugging mask");
static int __init netfs_init(void)
{
int ret = -ENOMEM;
if (!proc_mkdir("fs/netfs", NULL))
goto error;
#ifdef CONFIG_FSCACHE_STATS
if (!proc_create_single("fs/netfs/stats", S_IFREG | 0444, NULL,
netfs_stats_show))
goto error_proc;
#endif
ret = fscache_init();
if (ret < 0)
goto error_proc;
return 0;
error_proc:
remove_proc_entry("fs/netfs", NULL);
error:
return ret;
}
fs_initcall(netfs_init);
static void __exit netfs_exit(void)
{
fscache_exit();
remove_proc_entry("fs/netfs", NULL);
}
module_exit(netfs_exit);
...@@ -28,31 +28,32 @@ atomic_t netfs_n_rh_write_done; ...@@ -28,31 +28,32 @@ atomic_t netfs_n_rh_write_done;
atomic_t netfs_n_rh_write_failed; atomic_t netfs_n_rh_write_failed;
atomic_t netfs_n_rh_write_zskip; atomic_t netfs_n_rh_write_zskip;
void netfs_stats_show(struct seq_file *m) int netfs_stats_show(struct seq_file *m, void *v)
{ {
seq_printf(m, "RdHelp : RA=%u RP=%u WB=%u WBZ=%u rr=%u sr=%u\n", seq_printf(m, "Netfs : RA=%u RP=%u WB=%u WBZ=%u rr=%u sr=%u\n",
atomic_read(&netfs_n_rh_readahead), atomic_read(&netfs_n_rh_readahead),
atomic_read(&netfs_n_rh_readpage), atomic_read(&netfs_n_rh_readpage),
atomic_read(&netfs_n_rh_write_begin), atomic_read(&netfs_n_rh_write_begin),
atomic_read(&netfs_n_rh_write_zskip), atomic_read(&netfs_n_rh_write_zskip),
atomic_read(&netfs_n_rh_rreq), atomic_read(&netfs_n_rh_rreq),
atomic_read(&netfs_n_rh_sreq)); atomic_read(&netfs_n_rh_sreq));
seq_printf(m, "RdHelp : ZR=%u sh=%u sk=%u\n", seq_printf(m, "Netfs : ZR=%u sh=%u sk=%u\n",
atomic_read(&netfs_n_rh_zero), atomic_read(&netfs_n_rh_zero),
atomic_read(&netfs_n_rh_short_read), atomic_read(&netfs_n_rh_short_read),
atomic_read(&netfs_n_rh_write_zskip)); atomic_read(&netfs_n_rh_write_zskip));
seq_printf(m, "RdHelp : DL=%u ds=%u df=%u di=%u\n", seq_printf(m, "Netfs : DL=%u ds=%u df=%u di=%u\n",
atomic_read(&netfs_n_rh_download), atomic_read(&netfs_n_rh_download),
atomic_read(&netfs_n_rh_download_done), atomic_read(&netfs_n_rh_download_done),
atomic_read(&netfs_n_rh_download_failed), atomic_read(&netfs_n_rh_download_failed),
atomic_read(&netfs_n_rh_download_instead)); atomic_read(&netfs_n_rh_download_instead));
seq_printf(m, "RdHelp : RD=%u rs=%u rf=%u\n", seq_printf(m, "Netfs : RD=%u rs=%u rf=%u\n",
atomic_read(&netfs_n_rh_read), atomic_read(&netfs_n_rh_read),
atomic_read(&netfs_n_rh_read_done), atomic_read(&netfs_n_rh_read_done),
atomic_read(&netfs_n_rh_read_failed)); atomic_read(&netfs_n_rh_read_failed));
seq_printf(m, "RdHelp : WR=%u ws=%u wf=%u\n", seq_printf(m, "Netfs : WR=%u ws=%u wf=%u\n",
atomic_read(&netfs_n_rh_write), atomic_read(&netfs_n_rh_write),
atomic_read(&netfs_n_rh_write_done), atomic_read(&netfs_n_rh_write_done),
atomic_read(&netfs_n_rh_write_failed)); atomic_read(&netfs_n_rh_write_failed));
return fscache_stats_show(m);
} }
EXPORT_SYMBOL(netfs_stats_show); EXPORT_SYMBOL(netfs_stats_show);
...@@ -294,7 +294,6 @@ void netfs_get_subrequest(struct netfs_io_subrequest *subreq, ...@@ -294,7 +294,6 @@ void netfs_get_subrequest(struct netfs_io_subrequest *subreq,
enum netfs_sreq_ref_trace what); enum netfs_sreq_ref_trace what);
void netfs_put_subrequest(struct netfs_io_subrequest *subreq, void netfs_put_subrequest(struct netfs_io_subrequest *subreq,
bool was_async, enum netfs_sreq_ref_trace what); bool was_async, enum netfs_sreq_ref_trace what);
void netfs_stats_show(struct seq_file *);
ssize_t netfs_extract_user_iter(struct iov_iter *orig, size_t orig_len, ssize_t netfs_extract_user_iter(struct iov_iter *orig, size_t orig_len,
struct iov_iter *new, struct iov_iter *new,
iov_iter_extraction_t extraction_flags); iov_iter_extraction_t extraction_flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment