Loading fs/cifs/cifs_debug.c +50 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include "cifsproto.h" #include "cifs_debug.h" #include "cifsfs.h" #include "fs_context.h" #ifdef CONFIG_CIFS_DFS_UPCALL #include "dfs_cache.h" #endif Loading Loading @@ -696,6 +697,7 @@ static const struct proc_ops cifs_lookup_cache_proc_ops; static const struct proc_ops traceSMB_proc_ops; static const struct proc_ops cifs_security_flags_proc_ops; static const struct proc_ops cifs_linux_ext_proc_ops; static const struct proc_ops cifs_mount_params_proc_ops; void cifs_proc_init(void) Loading @@ -720,6 +722,8 @@ cifs_proc_init(void) proc_create("LookupCacheEnabled", 0644, proc_fs_cifs, &cifs_lookup_cache_proc_ops); proc_create("mount_params", 0444, proc_fs_cifs, &cifs_mount_params_proc_ops); #ifdef CONFIG_CIFS_DFS_UPCALL proc_create("dfscache", 0644, proc_fs_cifs, &dfscache_proc_ops); #endif Loading Loading @@ -758,6 +762,7 @@ cifs_proc_clean(void) remove_proc_entry("SecurityFlags", proc_fs_cifs); remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs); remove_proc_entry("LookupCacheEnabled", proc_fs_cifs); remove_proc_entry("mount_params", proc_fs_cifs); #ifdef CONFIG_CIFS_DFS_UPCALL remove_proc_entry("dfscache", proc_fs_cifs); Loading Loading @@ -1017,6 +1022,51 @@ static const struct proc_ops cifs_security_flags_proc_ops = { .proc_release = single_release, .proc_write = cifs_security_flags_proc_write, }; /* To make it easier to debug, can help to show mount params */ static int cifs_mount_params_proc_show(struct seq_file *m, void *v) { const struct fs_parameter_spec *p; const char *type; for (p = smb3_fs_parameters; p->name; p++) { /* cannot use switch with pointers... */ if (!p->type) { if (p->flags == fs_param_neg_with_no) type = "noflag"; else type = "flag"; } else if (p->type == fs_param_is_bool) type = "bool"; else if (p->type == fs_param_is_u32) type = "u32"; else if (p->type == fs_param_is_u64) type = "u64"; else if (p->type == fs_param_is_string) type = "string"; else type = "unknown"; seq_printf(m, "%s:%s\n", p->name, type); } return 0; } static int cifs_mount_params_proc_open(struct inode *inode, struct file *file) { return single_open(file, cifs_mount_params_proc_show, NULL); } static const struct proc_ops cifs_mount_params_proc_ops = { .proc_open = cifs_mount_params_proc_open, .proc_read = seq_read, .proc_lseek = seq_lseek, .proc_release = single_release, /* No need for write for now */ /* .proc_write = cifs_mount_params_proc_write, */ }; #else inline void cifs_proc_init(void) { Loading Loading
fs/cifs/cifs_debug.c +50 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include "cifsproto.h" #include "cifs_debug.h" #include "cifsfs.h" #include "fs_context.h" #ifdef CONFIG_CIFS_DFS_UPCALL #include "dfs_cache.h" #endif Loading Loading @@ -696,6 +697,7 @@ static const struct proc_ops cifs_lookup_cache_proc_ops; static const struct proc_ops traceSMB_proc_ops; static const struct proc_ops cifs_security_flags_proc_ops; static const struct proc_ops cifs_linux_ext_proc_ops; static const struct proc_ops cifs_mount_params_proc_ops; void cifs_proc_init(void) Loading @@ -720,6 +722,8 @@ cifs_proc_init(void) proc_create("LookupCacheEnabled", 0644, proc_fs_cifs, &cifs_lookup_cache_proc_ops); proc_create("mount_params", 0444, proc_fs_cifs, &cifs_mount_params_proc_ops); #ifdef CONFIG_CIFS_DFS_UPCALL proc_create("dfscache", 0644, proc_fs_cifs, &dfscache_proc_ops); #endif Loading Loading @@ -758,6 +762,7 @@ cifs_proc_clean(void) remove_proc_entry("SecurityFlags", proc_fs_cifs); remove_proc_entry("LinuxExtensionsEnabled", proc_fs_cifs); remove_proc_entry("LookupCacheEnabled", proc_fs_cifs); remove_proc_entry("mount_params", proc_fs_cifs); #ifdef CONFIG_CIFS_DFS_UPCALL remove_proc_entry("dfscache", proc_fs_cifs); Loading Loading @@ -1017,6 +1022,51 @@ static const struct proc_ops cifs_security_flags_proc_ops = { .proc_release = single_release, .proc_write = cifs_security_flags_proc_write, }; /* To make it easier to debug, can help to show mount params */ static int cifs_mount_params_proc_show(struct seq_file *m, void *v) { const struct fs_parameter_spec *p; const char *type; for (p = smb3_fs_parameters; p->name; p++) { /* cannot use switch with pointers... */ if (!p->type) { if (p->flags == fs_param_neg_with_no) type = "noflag"; else type = "flag"; } else if (p->type == fs_param_is_bool) type = "bool"; else if (p->type == fs_param_is_u32) type = "u32"; else if (p->type == fs_param_is_u64) type = "u64"; else if (p->type == fs_param_is_string) type = "string"; else type = "unknown"; seq_printf(m, "%s:%s\n", p->name, type); } return 0; } static int cifs_mount_params_proc_open(struct inode *inode, struct file *file) { return single_open(file, cifs_mount_params_proc_show, NULL); } static const struct proc_ops cifs_mount_params_proc_ops = { .proc_open = cifs_mount_params_proc_open, .proc_read = seq_read, .proc_lseek = seq_lseek, .proc_release = single_release, /* No need for write for now */ /* .proc_write = cifs_mount_params_proc_write, */ }; #else inline void cifs_proc_init(void) { Loading