• Home
  • Raw
  • Download

Lines Matching refs:qs

96 	struct o2quo_state *qs = &o2quo_state;  in o2quo_make_decision()  local
98 spin_lock(&qs->qs_lock); in o2quo_make_decision()
100 lowest_hb = find_first_bit(qs->qs_hb_bm, O2NM_MAX_NODES); in o2quo_make_decision()
102 lowest_reachable = test_bit(lowest_hb, qs->qs_conn_bm); in o2quo_make_decision()
105 "lowest: %d (%sreachable)\n", qs->qs_heartbeating, in o2quo_make_decision()
106 qs->qs_connected, lowest_hb, lowest_reachable ? "" : "un"); in o2quo_make_decision()
108 if (!test_bit(o2nm_this_node(), qs->qs_hb_bm) || in o2quo_make_decision()
109 qs->qs_heartbeating == 1) in o2quo_make_decision()
112 if (qs->qs_heartbeating & 1) { in o2quo_make_decision()
115 quorum = (qs->qs_heartbeating + 1)/2; in o2quo_make_decision()
116 if (qs->qs_connected < quorum) { in o2quo_make_decision()
120 qs->qs_connected, quorum, in o2quo_make_decision()
121 qs->qs_heartbeating); in o2quo_make_decision()
129 quorum = qs->qs_heartbeating / 2; in o2quo_make_decision()
130 if (qs->qs_connected < quorum) { in o2quo_make_decision()
134 qs->qs_connected, quorum, in o2quo_make_decision()
135 qs->qs_heartbeating); in o2quo_make_decision()
138 else if ((qs->qs_connected == quorum) && in o2quo_make_decision()
143 "node %u\n", quorum, qs->qs_heartbeating, in o2quo_make_decision()
151 spin_unlock(&qs->qs_lock); in o2quo_make_decision()
156 qs->qs_heartbeating, qs->qs_connected, lowest_hb, in o2quo_make_decision()
158 spin_unlock(&qs->qs_lock); in o2quo_make_decision()
164 static void o2quo_set_hold(struct o2quo_state *qs, u8 node) in o2quo_set_hold() argument
166 assert_spin_locked(&qs->qs_lock); in o2quo_set_hold()
168 if (!test_and_set_bit(node, qs->qs_hold_bm)) { in o2quo_set_hold()
169 qs->qs_holds++; in o2quo_set_hold()
170 mlog_bug_on_msg(qs->qs_holds == O2NM_MAX_NODES, in o2quo_set_hold()
172 mlog(0, "node %u, %d total\n", node, qs->qs_holds); in o2quo_set_hold()
176 static void o2quo_clear_hold(struct o2quo_state *qs, u8 node) in o2quo_clear_hold() argument
178 assert_spin_locked(&qs->qs_lock); in o2quo_clear_hold()
180 if (test_and_clear_bit(node, qs->qs_hold_bm)) { in o2quo_clear_hold()
181 mlog(0, "node %u, %d total\n", node, qs->qs_holds - 1); in o2quo_clear_hold()
182 if (--qs->qs_holds == 0) { in o2quo_clear_hold()
183 if (qs->qs_pending) { in o2quo_clear_hold()
184 qs->qs_pending = 0; in o2quo_clear_hold()
185 schedule_work(&qs->qs_work); in o2quo_clear_hold()
188 mlog_bug_on_msg(qs->qs_holds < 0, "node %u, holds %d\n", in o2quo_clear_hold()
189 node, qs->qs_holds); in o2quo_clear_hold()
199 struct o2quo_state *qs = &o2quo_state; in o2quo_hb_up() local
201 spin_lock(&qs->qs_lock); in o2quo_hb_up()
203 qs->qs_heartbeating++; in o2quo_hb_up()
204 mlog_bug_on_msg(qs->qs_heartbeating == O2NM_MAX_NODES, in o2quo_hb_up()
206 mlog_bug_on_msg(test_bit(node, qs->qs_hb_bm), "node %u\n", node); in o2quo_hb_up()
207 set_bit(node, qs->qs_hb_bm); in o2quo_hb_up()
209 mlog(0, "node %u, %d total\n", node, qs->qs_heartbeating); in o2quo_hb_up()
211 if (!test_bit(node, qs->qs_conn_bm)) in o2quo_hb_up()
212 o2quo_set_hold(qs, node); in o2quo_hb_up()
214 o2quo_clear_hold(qs, node); in o2quo_hb_up()
216 spin_unlock(&qs->qs_lock); in o2quo_hb_up()
223 struct o2quo_state *qs = &o2quo_state; in o2quo_hb_down() local
225 spin_lock(&qs->qs_lock); in o2quo_hb_down()
227 qs->qs_heartbeating--; in o2quo_hb_down()
228 mlog_bug_on_msg(qs->qs_heartbeating < 0, in o2quo_hb_down()
230 node, qs->qs_heartbeating); in o2quo_hb_down()
231 mlog_bug_on_msg(!test_bit(node, qs->qs_hb_bm), "node %u\n", node); in o2quo_hb_down()
232 clear_bit(node, qs->qs_hb_bm); in o2quo_hb_down()
234 mlog(0, "node %u, %d total\n", node, qs->qs_heartbeating); in o2quo_hb_down()
236 o2quo_clear_hold(qs, node); in o2quo_hb_down()
238 spin_unlock(&qs->qs_lock); in o2quo_hb_down()
248 struct o2quo_state *qs = &o2quo_state; in o2quo_hb_still_up() local
250 spin_lock(&qs->qs_lock); in o2quo_hb_still_up()
254 qs->qs_pending = 1; in o2quo_hb_still_up()
255 o2quo_clear_hold(qs, node); in o2quo_hb_still_up()
257 spin_unlock(&qs->qs_lock); in o2quo_hb_still_up()
267 struct o2quo_state *qs = &o2quo_state; in o2quo_conn_up() local
269 spin_lock(&qs->qs_lock); in o2quo_conn_up()
271 qs->qs_connected++; in o2quo_conn_up()
272 mlog_bug_on_msg(qs->qs_connected == O2NM_MAX_NODES, in o2quo_conn_up()
274 mlog_bug_on_msg(test_bit(node, qs->qs_conn_bm), "node %u\n", node); in o2quo_conn_up()
275 set_bit(node, qs->qs_conn_bm); in o2quo_conn_up()
277 mlog(0, "node %u, %d total\n", node, qs->qs_connected); in o2quo_conn_up()
279 if (!test_bit(node, qs->qs_hb_bm)) in o2quo_conn_up()
280 o2quo_set_hold(qs, node); in o2quo_conn_up()
282 o2quo_clear_hold(qs, node); in o2quo_conn_up()
284 spin_unlock(&qs->qs_lock); in o2quo_conn_up()
293 struct o2quo_state *qs = &o2quo_state; in o2quo_conn_err() local
295 spin_lock(&qs->qs_lock); in o2quo_conn_err()
297 if (test_bit(node, qs->qs_conn_bm)) { in o2quo_conn_err()
298 qs->qs_connected--; in o2quo_conn_err()
299 mlog_bug_on_msg(qs->qs_connected < 0, in o2quo_conn_err()
301 node, qs->qs_connected); in o2quo_conn_err()
303 clear_bit(node, qs->qs_conn_bm); in o2quo_conn_err()
305 if (test_bit(node, qs->qs_hb_bm)) in o2quo_conn_err()
306 o2quo_set_hold(qs, node); in o2quo_conn_err()
309 mlog(0, "node %u, %d total\n", node, qs->qs_connected); in o2quo_conn_err()
312 spin_unlock(&qs->qs_lock); in o2quo_conn_err()
317 struct o2quo_state *qs = &o2quo_state; in o2quo_init() local
319 spin_lock_init(&qs->qs_lock); in o2quo_init()
320 INIT_WORK(&qs->qs_work, o2quo_make_decision); in o2quo_init()
325 struct o2quo_state *qs = &o2quo_state; in o2quo_exit() local
327 flush_work(&qs->qs_work); in o2quo_exit()