@@ -73,6 +73,7 @@ struct dlm_cluster {
73
73
unsigned int cl_log_debug ;
74
74
unsigned int cl_log_info ;
75
75
unsigned int cl_protocol ;
76
+ unsigned int cl_mark ;
76
77
unsigned int cl_timewarn_cs ;
77
78
unsigned int cl_waitwarn_us ;
78
79
unsigned int cl_new_rsb_count ;
96
97
CLUSTER_ATTR_LOG_DEBUG ,
97
98
CLUSTER_ATTR_LOG_INFO ,
98
99
CLUSTER_ATTR_PROTOCOL ,
100
+ CLUSTER_ATTR_MARK ,
99
101
CLUSTER_ATTR_TIMEWARN_CS ,
100
102
CLUSTER_ATTR_WAITWARN_US ,
101
103
CLUSTER_ATTR_NEW_RSB_COUNT ,
@@ -168,6 +170,7 @@ CLUSTER_ATTR(scan_secs, 1);
168
170
CLUSTER_ATTR (log_debug , 0 );
169
171
CLUSTER_ATTR (log_info , 0 );
170
172
CLUSTER_ATTR (protocol , 0 );
173
+ CLUSTER_ATTR (mark , 0 );
171
174
CLUSTER_ATTR (timewarn_cs , 1 );
172
175
CLUSTER_ATTR (waitwarn_us , 0 );
173
176
CLUSTER_ATTR (new_rsb_count , 0 );
@@ -183,6 +186,7 @@ static struct configfs_attribute *cluster_attrs[] = {
183
186
[CLUSTER_ATTR_LOG_DEBUG ] = & cluster_attr_log_debug ,
184
187
[CLUSTER_ATTR_LOG_INFO ] = & cluster_attr_log_info ,
185
188
[CLUSTER_ATTR_PROTOCOL ] = & cluster_attr_protocol ,
189
+ [CLUSTER_ATTR_MARK ] = & cluster_attr_mark ,
186
190
[CLUSTER_ATTR_TIMEWARN_CS ] = & cluster_attr_timewarn_cs ,
187
191
[CLUSTER_ATTR_WAITWARN_US ] = & cluster_attr_waitwarn_us ,
188
192
[CLUSTER_ATTR_NEW_RSB_COUNT ] = & cluster_attr_new_rsb_count ,
@@ -196,6 +200,7 @@ enum {
196
200
COMM_ATTR_LOCAL ,
197
201
COMM_ATTR_ADDR ,
198
202
COMM_ATTR_ADDR_LIST ,
203
+ COMM_ATTR_MARK ,
199
204
};
200
205
201
206
enum {
@@ -228,6 +233,7 @@ struct dlm_comm {
228
233
int nodeid ;
229
234
int local ;
230
235
int addr_count ;
236
+ unsigned int mark ;
231
237
struct sockaddr_storage * addr [DLM_MAX_ADDR_COUNT ];
232
238
};
233
239
@@ -465,6 +471,7 @@ static struct config_item *make_comm(struct config_group *g, const char *name)
465
471
cm -> nodeid = -1 ;
466
472
cm -> local = 0 ;
467
473
cm -> addr_count = 0 ;
474
+ cm -> mark = 0 ;
468
475
return & cm -> item ;
469
476
}
470
477
@@ -660,8 +667,28 @@ static ssize_t comm_addr_list_show(struct config_item *item, char *buf)
660
667
return 4096 - allowance ;
661
668
}
662
669
670
+ static ssize_t comm_mark_show (struct config_item * item , char * buf )
671
+ {
672
+ return sprintf (buf , "%u\n" , config_item_to_comm (item )-> mark );
673
+ }
674
+
675
+ static ssize_t comm_mark_store (struct config_item * item , const char * buf ,
676
+ size_t len )
677
+ {
678
+ unsigned int mark ;
679
+ int rc ;
680
+
681
+ rc = kstrtouint (buf , 0 , & mark );
682
+ if (rc )
683
+ return rc ;
684
+
685
+ config_item_to_comm (item )-> mark = mark ;
686
+ return len ;
687
+ }
688
+
663
689
CONFIGFS_ATTR (comm_ , nodeid );
664
690
CONFIGFS_ATTR (comm_ , local );
691
+ CONFIGFS_ATTR (comm_ , mark );
665
692
CONFIGFS_ATTR_WO (comm_ , addr );
666
693
CONFIGFS_ATTR_RO (comm_ , addr_list );
667
694
@@ -670,6 +697,7 @@ static struct configfs_attribute *comm_attrs[] = {
670
697
[COMM_ATTR_LOCAL ] = & comm_attr_local ,
671
698
[COMM_ATTR_ADDR ] = & comm_attr_addr ,
672
699
[COMM_ATTR_ADDR_LIST ] = & comm_attr_addr_list ,
700
+ [COMM_ATTR_MARK ] = & comm_attr_mark ,
673
701
NULL ,
674
702
};
675
703
@@ -829,6 +857,20 @@ int dlm_comm_seq(int nodeid, uint32_t *seq)
829
857
return 0 ;
830
858
}
831
859
860
+ int dlm_comm_mark (int nodeid , unsigned int * mark )
861
+ {
862
+ struct dlm_comm * cm ;
863
+
864
+ cm = get_comm (nodeid );
865
+ if (!cm )
866
+ return - ENOENT ;
867
+
868
+ * mark = cm -> mark ;
869
+ put_comm (cm );
870
+
871
+ return 0 ;
872
+ }
873
+
832
874
int dlm_our_nodeid (void )
833
875
{
834
876
return local_comm ? local_comm -> nodeid : 0 ;
@@ -855,6 +897,7 @@ int dlm_our_addr(struct sockaddr_storage *addr, int num)
855
897
#define DEFAULT_LOG_DEBUG 0
856
898
#define DEFAULT_LOG_INFO 1
857
899
#define DEFAULT_PROTOCOL 0
900
+ #define DEFAULT_MARK 0
858
901
#define DEFAULT_TIMEWARN_CS 500 /* 5 sec = 500 centiseconds */
859
902
#define DEFAULT_WAITWARN_US 0
860
903
#define DEFAULT_NEW_RSB_COUNT 128
@@ -871,6 +914,7 @@ struct dlm_config_info dlm_config = {
871
914
.ci_log_debug = DEFAULT_LOG_DEBUG ,
872
915
.ci_log_info = DEFAULT_LOG_INFO ,
873
916
.ci_protocol = DEFAULT_PROTOCOL ,
917
+ .ci_mark = DEFAULT_MARK ,
874
918
.ci_timewarn_cs = DEFAULT_TIMEWARN_CS ,
875
919
.ci_waitwarn_us = DEFAULT_WAITWARN_US ,
876
920
.ci_new_rsb_count = DEFAULT_NEW_RSB_COUNT ,
0 commit comments