• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/timemachine/db-4.7.25.NC/rep/

Lines Matching refs:rep

23 #define	IS_PHASE1_DONE(rep)						\
24 ((rep)->sites >= (rep)->nsites && (rep)->w_priority > 0)
26 #define I_HAVE_WON(rep, winner) \
27 ((rep)->votes >= (rep)->nvotes && winner == (rep)->eid)
57 REP *rep;
80 rep = db_rep->region;
90 nsites = given_nsites == 0 ? rep->config_nsites : given_nsites;
119 timeout = rep->elect_timeout;
120 if (!F_ISSET(rep, REP_F_GROUP_ESTD) && rep->full_elect_timeout != 0) {
122 timeout = rep->full_elect_timeout;
124 realpri = rep->priority;
171 __os_gettime(env, &rep->etime, 1);
180 F_SET(rep, REP_F_EPHASE0);
187 F_CLR(rep, REP_F_EPHASE0);
213 if ((ret = __rep_lockout_apply(env, rep, 0)) != 0)
226 F_SET(rep, REP_F_EPHASE1 | REP_F_NOARCHIVE);
227 F_CLR(rep, REP_F_TALLY);
249 if (F_ISSET(rep, REP_F_READY_API | REP_F_READY_OP |
263 if ((ret = __rep_write_egen(env, rep->egen + 1)) != 0)
267 if (__rep_tally(env, rep, rep->eid, &rep->sites, rep->egen,
268 rep->tally_off) != 0) {
272 __rep_cmp_vote(env, rep, rep->eid, &lsn, priority, rep->gen,
279 egen = rep->egen;
280 done = IS_PHASE1_DONE(rep);
293 if (eid != DB_EID_INVALID && !IN_ELECTION(rep)) {
305 (u_long)rep->egen, (u_long)to, (u_long)timeout));
331 if (egen != rep->egen) {
335 (u_long)egen, (u_long)rep->egen));
338 if (rep->sites >= rep->nvotes) {
341 send_vote = rep->winner;
347 if (rep->winner == rep->eid) {
348 (void)__rep_tally(env, rep, rep->eid, &rep->votes,
349 egen, rep->v2tally_off);
351 "Counted my vote %d", rep->votes));
353 F_SET(rep, REP_F_EPHASE2);
354 F_CLR(rep, REP_F_EPHASE1);
359 if (rep->sites >= rep->nvotes)
362 rep->sites, rep->nvotes, rep->nsites);
366 rep->sites, rep->nvotes, rep->nsites);
375 if (send_vote != rep->eid) {
395 if (I_HAVE_WON(rep, rep->winner)) {
397 "Skipping phase2 wait: already got %d votes", rep->votes));
416 (u_long)rep->egen,
426 if (egen != rep->egen) {
430 (u_long)egen, (u_long)rep->egen));
433 done = rep->votes >= rep->nvotes;
436 rep->votes, rep->nvotes, rep->nsites));
437 if (I_HAVE_WON(rep, rep->winner)) {
438 i_won: __rep_elect_master(env, rep);
453 __rep_elect_done(env, rep, 0);
455 F_SET(rep, orig_tally);
464 F_CLR(rep, REP_F_INREPELECT);
466 need_req = F_ISSET(rep, REP_F_SKIPPED_APPLY);
467 F_CLR(rep, REP_F_READY_APPLY | REP_F_SKIPPED_APPLY);
479 ret = __rep_fire_elected(env, rep, egen);
483 ret, rep->sites, (u_long)rep->egen, (u_long)rep->flags));
508 REP *rep;
521 rep = db_rep->region;
525 if (F_ISSET(rep, REP_F_MASTER)) {
563 (u_long)vi->egen, (u_long)rep->egen));
564 if (vi->egen < rep->egen) {
567 (u_long)vi->egen, (u_long)rep->egen));
568 egen_arg.egen = rep->egen;
570 if (rep->version < DB_REPVERSION_47)
583 if (vi->egen > rep->egen) {
586 (u_long)vi->egen, (u_long)rep->egen));
587 __rep_elect_done(env, rep, 0);
588 rep->egen = vi->egen;
589 F_SET(rep, REP_F_EGENUPDATE);
597 if (!IN_ELECTION_TALLY(rep)) {
598 F_SET(rep, REP_F_TALLY);
599 rep->nsites = vi->nsites;
600 rep->nvotes = vi->nvotes;
602 if (vi->nsites > rep->nsites)
603 rep->nsites = vi->nsites;
604 if (vi->nvotes > rep->nvotes)
605 rep->nvotes = vi->nvotes;
612 if (rep->sites + 1 > rep->nsites)
613 rep->nsites = rep->sites + 1;
614 if (rep->nsites > rep->asites &&
615 (ret = __rep_grow_sites(env, rep->nsites)) != 0) {
624 if (F_ISSET(rep, REP_F_EPHASE2)) {
634 if ((ret = __rep_tally(env, rep, eid, &rep->sites,
635 vi->egen, rep->tally_off)) != 0) {
637 (env, "Tally returned %d, sites %d", ret, rep->sites));
647 if (rep->sites > 1)
650 rep->winner, (u_long)rep->w_priority,
651 (u_long)rep->w_gen, rep->sites,
652 (u_long)rep->w_lsn.file,
653 (u_long)rep->w_lsn.offset));
655 __rep_cmp_vote(env, rep, eid, &rp->lsn, vi->priority,
662 if (!IN_ELECTION(rep)) {
664 "Not in election, but received vote1 0x%x", rep->flags));
669 master = rep->winner;
670 lsn = rep->w_lsn;
671 if (IS_PHASE1_DONE(rep)) {
674 master, master == rep->eid ? "(self)" : ""));
675 egen = rep->egen;
676 F_SET(rep, REP_F_EPHASE2);
677 F_CLR(rep, REP_F_EPHASE1);
678 if (master == rep->eid) {
679 (void)__rep_tally(env, rep, rep->eid,
680 &rep->votes, egen, rep->v2tally_off);
683 rep->votes, rep->nvotes));
684 if (I_HAVE_WON(rep, rep->winner)) {
685 __rep_elect_master(env, rep);
698 ret = __rep_fire_elected(env, rep, egen);
719 REP *rep;
727 rep = db_rep->region;
732 F_ISSET(rep, REP_F_MASTER) ? " (master)" : ""));
733 if (F_ISSET(rep, REP_F_MASTER)) {
737 STAT(rep->stat.st_elections_won++);
746 egen = rep->egen;
749 DB_ASSERT(env, rep->priority != 0);
775 if (!IN_ELECTION_TALLY(rep) && vi->egen >= rep->egen) {
778 (u_long)vi->egen, (u_long)rep->egen));
803 if (vi->egen != rep->egen) {
806 (u_long)vi->egen, (u_long)rep->egen));
814 if ((ret = __rep_tally(env, rep, eid, &rep->votes,
815 vi->egen, rep->v2tally_off)) != 0) {
820 rep->votes, rep->nvotes));
821 if (I_HAVE_WON(rep, rep->winner)) {
822 __rep_elect_master(env, rep);
828 ret = __rep_fire_elected(env, rep, egen);
841 __rep_tally(env, rep, eid, countp, egen, vtoff)
843 REP *rep;
886 vtoff == rep->tally_off ? '1' : '2', i, eid, (u_long)egen));
901 __rep_cmp_vote(env, rep, eid, lsnp, priority, gen, tiebreaker, flags)
903 REP *rep;
911 cmp = LOG_COMPARE(lsnp, &rep->w_lsn);
916 if (rep->sites > 1 &&
932 if ((priority != 0 && rep->w_priority == 0) ||
933 (((priority == 0 && rep->w_priority == 0) ||
934 (priority != 0 && rep->w_priority != 0)) && cmp > 0) ||
935 (cmp == 0 && (priority > rep->w_priority ||
936 (priority == rep->w_priority &&
937 (tiebreaker > rep->w_tiebreaker))))) {
940 rep->winner = eid;
941 rep->w_priority = priority;
942 rep->w_lsn = *lsnp;
943 rep->w_gen = gen;
944 rep->w_tiebreaker = tiebreaker;
946 } else if (rep->sites == 1) {
949 rep->winner = eid;
950 rep->w_priority = priority;
951 rep->w_gen = gen;
952 rep->w_lsn = *lsnp;
953 rep->w_tiebreaker = tiebreaker;
955 rep->winner = DB_EID_INVALID;
956 rep->w_priority = 0;
957 rep->w_gen = 0;
958 ZERO_LSN(rep->w_lsn);
959 rep->w_tiebreaker = 0;
980 REP *rep;
984 rep = db_rep->region;
989 STAT(rep->stat.st_elections++);
992 if (F_ISSET(rep, REP_F_MASTER)) {
1002 STAT(rep->stat.st_elections_won++);
1008 *otally = F_ISSET(rep, REP_F_TALLY);
1009 *beginp = IN_ELECTION(rep) || F_ISSET(rep, REP_F_INREPELECT);
1017 if (nsites > rep->asites &&
1021 F_SET(rep, REP_F_INREPELECT);
1022 F_CLR(rep, REP_F_EGENUPDATE);
1028 if (!IN_ELECTION_TALLY(rep)) {
1029 rep->nsites = nsites;
1030 rep->nvotes = nvotes;
1032 if (nsites > rep->nsites)
1033 rep->nsites = nsites;
1034 if (nvotes > rep->nvotes)
1035 rep->nvotes = nvotes;
1049 __rep_elect_master(env, rep)
1051 REP *rep;
1058 rep->master_id = rep->eid;
1060 if (F_ISSET(rep, REP_F_MASTERELECT | REP_F_MASTER)) {
1065 F_SET(rep, REP_F_MASTERELECT);
1066 STAT(rep->stat.st_elections_won++);
1070 rep->master_id, (u_long)rep->gen));
1074 __rep_fire_elected(env, rep, egen)
1076 REP *rep;
1080 if (rep->notified_egen < egen) {
1082 rep->notified_egen = egen;
1103 REP *rep;
1108 rep = db_rep->region;
1109 egen = rep->egen;
1130 if (full_elect && F_ISSET(rep, REP_F_GROUP_ESTD)) {
1131 *timeoutp = rep->elect_timeout;
1150 echg = egen != rep->egen;
1151 phase_over = !F_ISSET(rep, flags);
1171 (IN_ELECTION_TALLY(rep) ||
1172 F_ISSET(rep, REP_F_EGENUPDATE))) {
1174 F_CLR(rep, REP_F_EGENUPDATE);
1177 *eidp = rep->master_id;