Skip to content

Commit

Permalink
netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a …
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
dhowells committed Dec 24, 2023
1 parent 4498a8e commit 7eb5b3e
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 32 deletions.
8 changes: 2 additions & 6 deletions fs/netfs/fscache_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ unsigned int fscache_hash(unsigned int salt, const void *data, size_t len)
/*
* initialise the fs caching module
*/
static int __init fscache_init(void)
int __init fscache_init(void)
{
int ret = -ENOMEM;

Expand Down Expand Up @@ -94,12 +94,10 @@ static int __init fscache_init(void)
return ret;
}

fs_initcall(fscache_init);

/*
* clean up on module removal
*/
static void __exit fscache_exit(void)
void __exit fscache_exit(void)
{
_enter("");

Expand All @@ -108,5 +106,3 @@ static void __exit fscache_exit(void)
destroy_workqueue(fscache_wq);
pr_notice("FS-Cache unloaded\n");
}

module_exit(fscache_exit);
23 changes: 8 additions & 15 deletions fs/netfs/fscache_proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,34 @@
#include "internal.h"

/*
* initialise the /proc/fs/fscache/ directory
* Add files to /proc/fs/netfs/.
*/
int __init fscache_proc_init(void)
{
if (!proc_mkdir("fs/fscache", NULL))
goto error_dir;
if (!proc_symlink("fs/fscache", NULL, "../netfs"))
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))
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))
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))
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;

error:
remove_proc_entry("fs/fscache", NULL);
error_dir:
error_sym:
return -ENOMEM;
}

/*
* clean up the /proc/fs/fscache/ directory
* Clean up the /proc/fs/fscache symlink.
*/
void fscache_proc_cleanup(void)
{
Expand Down
4 changes: 1 addition & 3 deletions fs/netfs/fscache_stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ EXPORT_SYMBOL(fscache_n_culled);
/*
* 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_printf(m, "Cookies: n=%d v=%d vcol=%u voom=%u\n",
Expand Down Expand Up @@ -96,7 +96,5 @@ int fscache_stats_show(struct seq_file *m, void *v)
seq_printf(m, "IO : rd=%u wr=%u\n",
atomic_read(&fscache_n_read),
atomic_read(&fscache_n_write));

netfs_stats_show(m);
return 0;
}
12 changes: 11 additions & 1 deletion fs/netfs/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -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_zskip;

int netfs_stats_show(struct seq_file *m, void *v);

static inline void netfs_stat(atomic_t *stat)
{
Expand Down Expand Up @@ -166,6 +167,13 @@ static inline void fscache_see_cookie(struct fscache_cookie *cookie,
* fscache-main.c
*/
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
Expand Down Expand Up @@ -216,12 +224,14 @@ static inline void fscache_stat_d(atomic_t *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

#define __fscache_stat(stat) (NULL)
#define fscache_stat(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

/*
Expand Down
33 changes: 33 additions & 0 deletions fs/netfs/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

#include <linux/module.h>
#include <linux/export.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include "internal.h"
#define CREATE_TRACE_POINTS
#include <trace/events/netfs.h>
Expand All @@ -19,3 +21,34 @@ unsigned netfs_debug;
module_param_named(debug, netfs_debug, uint, S_IWUSR | S_IRUGO);
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);
13 changes: 7 additions & 6 deletions fs/netfs/stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,31 +28,32 @@ atomic_t netfs_n_rh_write_done;
atomic_t netfs_n_rh_write_failed;
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_readpage),
atomic_read(&netfs_n_rh_write_begin),
atomic_read(&netfs_n_rh_write_zskip),
atomic_read(&netfs_n_rh_rreq),
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_short_read),
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_done),
atomic_read(&netfs_n_rh_download_failed),
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_done),
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_done),
atomic_read(&netfs_n_rh_write_failed));
return fscache_stats_show(m);
}
EXPORT_SYMBOL(netfs_stats_show);
1 change: 0 additions & 1 deletion include/linux/netfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,6 @@ void netfs_get_subrequest(struct netfs_io_subrequest *subreq,
enum netfs_sreq_ref_trace what);
void netfs_put_subrequest(struct netfs_io_subrequest *subreq,
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,
struct iov_iter *new,
iov_iter_extraction_t extraction_flags);
Expand Down

0 comments on commit 7eb5b3e

Please sign in to comment.