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: David Howells <dhowells@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> cc: Christian Brauner <christian@brauner.io> cc: linux-fsdevel@vger.kernel.org cc: linux-cachefs@redhat.com
This commit is contained in:
parent
4498a8eccc
commit
7eb5b3e3a0
7 changed files with 62 additions and 32 deletions
|
@ -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 @@ error_wq:
|
||||||
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)
|
||||||
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 @@
|
||||||
#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);
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
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;
|
||||||
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,
|
||||||
* 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)
|
||||||
|
|
||||||
#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 @@
|
||||||
|
|
||||||
#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;
|
||||||
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;
|
||||||
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,
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue