mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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
 | 
			
		||||
 */
 | 
			
		||||
static int __init fscache_init(void)
 | 
			
		||||
int __init fscache_init(void)
 | 
			
		||||
{
 | 
			
		||||
	int ret = -ENOMEM;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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("");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -108,5 +106,3 @@ static void __exit fscache_exit(void)
 | 
			
		|||
	destroy_workqueue(fscache_wq);
 | 
			
		||||
	pr_notice("FS-Cache unloaded\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module_exit(fscache_exit);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue