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
 | 
					 * 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)
 | 
				
			||||||
	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…
	
		Reference in a new issue