diff mbox

[RFC,1/2] cifs: show enabled features in /proc

Message ID 4C52A287.7020904@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Suresh Jayaraman July 30, 2010, 9:59 a.m. UTC
None
diff mbox

Patch

diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 4fce6e6..af5dbf7 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -402,6 +402,7 @@  static const struct file_operations cifs_multiuser_mount_proc_fops;
 static const struct file_operations cifs_security_flags_proc_fops;
 static const struct file_operations cifs_experimental_proc_fops;
 static const struct file_operations cifs_linux_ext_proc_fops;
+static const struct file_operations cifs_feat_proc_fops;
 
 void
 cifs_proc_init(void)
@@ -428,6 +429,8 @@  cifs_proc_init(void)
 		    &cifs_security_flags_proc_fops);
 	proc_create("LookupCacheEnabled", 0, proc_fs_cifs,
 		    &cifs_lookup_cache_proc_fops);
+	proc_create("features", 0, proc_fs_cifs,
+		    &cifs_feat_proc_fops);
 }
 
 void
@@ -448,6 +451,7 @@  cifs_proc_clean(void)
 	remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs);
 	remove_proc_entry("Experimental", proc_fs_cifs);
 	remove_proc_entry("LookupCacheEnabled", proc_fs_cifs);
+	remove_proc_entry("features", proc_fs_cifs);
 	remove_proc_entry("fs/cifs", NULL);
 }
 
@@ -791,6 +795,38 @@  static const struct file_operations cifs_security_flags_proc_fops = {
 	.release	= single_release,
 	.write		= cifs_security_flags_proc_write,
 };
+
+static int cifs_feat_proc_show(struct seq_file *m, void *v)
+{
+	seq_printf(m, "# CIFS features enabled\n");
+#ifdef CONFIG_CIFS_DFS_UPCALL
+	seq_printf(m, "dfs");
+	seq_putc(m, ' ');
+#endif
+#ifdef CONFIG_CIFS_UPCALL
+	seq_printf(m, "spnego");
+	seq_putc(m, ' ');
+#endif
+#ifdef CONFIG_CIFS_FSCACHE
+	seq_printf(m, "fsc");
+	seq_putc(m, ' ');
+#endif
+	seq_putc(m, '\n');
+	return 0;
+}
+
+static int cifs_feat_proc_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, cifs_feat_proc_show, NULL);
+}
+
+static const struct file_operations cifs_feat_proc_fops = {
+	.owner		= THIS_MODULE,
+	.open		= cifs_feat_proc_open,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= single_release,
+};
 #else
 inline void cifs_proc_init(void)
 {