|
16 | 16 | #include <linux/slab.h> |
17 | 17 |
|
18 | 18 | #include "dlm_internal.h" |
| 19 | +#include "midcomms.h" |
19 | 20 | #include "lock.h" |
20 | 21 |
|
21 | 22 | #define DLM_DEBUG_BUF_LEN 4096 |
22 | 23 | static char debug_buf[DLM_DEBUG_BUF_LEN]; |
23 | 24 | static struct mutex debug_buf_lock; |
24 | 25 |
|
25 | 26 | static struct dentry *dlm_root; |
| 27 | +static struct dentry *dlm_comms; |
26 | 28 |
|
27 | 29 | static char *print_lockmode(int mode) |
28 | 30 | { |
@@ -738,6 +740,57 @@ void dlm_delete_debug_file(struct dlm_ls *ls) |
738 | 740 | debugfs_remove(ls->ls_debug_toss_dentry); |
739 | 741 | } |
740 | 742 |
|
| 743 | +static int dlm_state_show(struct seq_file *file, void *offset) |
| 744 | +{ |
| 745 | + seq_printf(file, "%s\n", dlm_midcomms_state(file->private)); |
| 746 | + return 0; |
| 747 | +} |
| 748 | +DEFINE_SHOW_ATTRIBUTE(dlm_state); |
| 749 | + |
| 750 | +static int dlm_flags_show(struct seq_file *file, void *offset) |
| 751 | +{ |
| 752 | + seq_printf(file, "%lu\n", dlm_midcomms_flags(file->private)); |
| 753 | + return 0; |
| 754 | +} |
| 755 | +DEFINE_SHOW_ATTRIBUTE(dlm_flags); |
| 756 | + |
| 757 | +static int dlm_send_queue_cnt_show(struct seq_file *file, void *offset) |
| 758 | +{ |
| 759 | + seq_printf(file, "%d\n", dlm_midcomms_send_queue_cnt(file->private)); |
| 760 | + return 0; |
| 761 | +} |
| 762 | +DEFINE_SHOW_ATTRIBUTE(dlm_send_queue_cnt); |
| 763 | + |
| 764 | +static int dlm_version_show(struct seq_file *file, void *offset) |
| 765 | +{ |
| 766 | + seq_printf(file, "0x%08x\n", dlm_midcomms_version(file->private)); |
| 767 | + return 0; |
| 768 | +} |
| 769 | +DEFINE_SHOW_ATTRIBUTE(dlm_version); |
| 770 | + |
| 771 | +void *dlm_create_debug_comms_file(int nodeid, void *data) |
| 772 | +{ |
| 773 | + struct dentry *d_node; |
| 774 | + char name[256]; |
| 775 | + |
| 776 | + memset(name, 0, sizeof(name)); |
| 777 | + snprintf(name, 256, "%d", nodeid); |
| 778 | + |
| 779 | + d_node = debugfs_create_dir(name, dlm_comms); |
| 780 | + debugfs_create_file("state", 0444, d_node, data, &dlm_state_fops); |
| 781 | + debugfs_create_file("flags", 0444, d_node, data, &dlm_flags_fops); |
| 782 | + debugfs_create_file("send_queue_count", 0444, d_node, data, |
| 783 | + &dlm_send_queue_cnt_fops); |
| 784 | + debugfs_create_file("version", 0444, d_node, data, &dlm_version_fops); |
| 785 | + |
| 786 | + return d_node; |
| 787 | +} |
| 788 | + |
| 789 | +void dlm_delete_debug_comms_file(void *ctx) |
| 790 | +{ |
| 791 | + debugfs_remove(ctx); |
| 792 | +} |
| 793 | + |
741 | 794 | void dlm_create_debug_file(struct dlm_ls *ls) |
742 | 795 | { |
743 | 796 | char name[DLM_LOCKSPACE_LEN + 8]; |
@@ -797,6 +850,7 @@ void __init dlm_register_debugfs(void) |
797 | 850 | { |
798 | 851 | mutex_init(&debug_buf_lock); |
799 | 852 | dlm_root = debugfs_create_dir("dlm", NULL); |
| 853 | + dlm_comms = debugfs_create_dir("comms", dlm_root); |
800 | 854 | } |
801 | 855 |
|
802 | 856 | void dlm_unregister_debugfs(void) |
|
0 commit comments