-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrevision-2785.patch
54 lines (51 loc) · 1.3 KB
/
revision-2785.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Index: services/cpg.c
===================================================================
--- services/cpg.c (revision 2784)
+++ services/cpg.c (revision 2785)
@@ -423,6 +423,27 @@
static struct req_exec_cpg_downlist g_req_exec_cpg_downlist;
+static int memb_list_remove_value (unsigned int *list,
+ size_t list_entries, int value)
+{
+ int j;
+ int found = 0;
+
+ for (j = 0; j < list_entries; j++) {
+ if (list[j] == value) {
+ /* mark next values to be copied down */
+ found = 1;
+ }
+ else if (found) {
+ list[j-1] = list[j];
+ }
+ }
+ if (found)
+ return (list_entries - 1);
+ else
+ return list_entries;
+}
+
static void cpg_sync_init_v2 (
const unsigned int *trans_list,
size_t trans_list_entries,
@@ -444,6 +465,21 @@
last_sync_ring_id.nodeid = ring_id->rep.nodeid;
last_sync_ring_id.seq = ring_id->seq;
+ for (i = 0; i < my_old_member_list_entries; i++) {
+ found = 0;
+ for (j = 0; j < trans_list_entries; j++) {
+ if (my_old_member_list[i] == trans_list[j]) {
+ found = 1;
+ break;
+ }
+ }
+ if (found == 0) {
+ my_member_list_entries = memb_list_remove_value (
+ my_member_list, my_member_list_entries,
+ my_old_member_list[i]);
+ }
+ }
+
for (i = 0; i < my_member_list_entries; i++) {
if (my_member_list[i] < lowest_nodeid) {
lowest_nodeid = my_member_list[i];