• 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

33 #define	MASTER_ONLY(rep, rp) do {					\
34 if (!F_ISSET(rep, REP_F_MASTER)) { \
44 #define CLIENT_ONLY(rep, rp) do { \
45 if (!F_ISSET(rep, REP_F_CLIENT)) { \
75 if (F_ISSET(rep, REP_F_CLIENT)) { \
76 STAT(rep->stat.st_client_svc_req++); \
78 STAT(rep->stat.st_client_svc_miss++); \
79 ret = __rep_skip_msg(env, rep, eid, rp->rectype);\
94 STAT(rep->stat.st_msgs_recover++); \
95 ret = __rep_skip_msg(env, rep, eid, rp->rectype); \
108 if (F_ISSET(rep, REP_F_DELAY) || \
109 rep->master_id == DB_EID_INVALID || \
111 (!F_ISSET(rep, REP_F_RECOVER_LOG) || \
112 LOG_COMPARE(&rp->lsn, &rep->last_lsn) > 0))) { \
114 STAT(rep->stat.st_msgs_recover++); \
115 ret = __rep_skip_msg(env, rep, eid, rp->rectype); \
120 #define ANYSITE(rep)
153 REP *rep;
194 rep = db_rep->region;
250 * Check the version number for both rep and log. If it is
262 "Received record %lu with old rep version %lu",
271 "Converted to record %lu with old rep version %lu",
304 if (F_ISSET(rep, REP_F_READY_MSG)) {
320 if (F_ISSET(rep, REP_F_CLIENT) && REP_MSG_REQ(rp->rectype)) {
321 STAT(rep->stat.st_client_svc_req++);
322 STAT(rep->stat.st_client_svc_miss++);
328 rep->msg_th++;
329 gen = rep->gen;
330 recovering = F_ISSET(rep, REP_F_RECOVER_MASK);
333 STAT(rep->stat.st_msgs_processed++);
362 * We don't hold the rep mutex, and could miscount if we race.
364 STAT(rep->stat.st_msgs_badgen++);
375 if (F_ISSET(rep, REP_F_MASTER)) {
376 STAT(rep->stat.st_dupmasters++);
408 rep->master_id = DB_EID_INVALID;
409 gen = rep->gen = rp->gen;
423 if (__rep_check_doreq(env, rep))
442 if (!F_ISSET(rep, REP_F_GROUP_ESTD))
446 F_SET(rep, REP_F_GROUP_ESTD);
462 ANYSITE(rep);
471 (u_long)egen_arg.egen, (u_long)rep->egen));
472 if (egen_arg.egen > rep->egen) {
482 __rep_elect_done(env, rep, 0);
483 rep->egen = egen_arg.egen;
484 F_SET(rep, REP_F_EGENUPDATE);
492 ANYSITE(rep);
504 if (F_ISSET(rep, REP_F_MASTER))
509 egen_arg.egen = rep->egen;
511 if (rep->version < DB_REPVERSION_47)
530 CLIENT_ONLY(rep, rp);
537 CLIENT_ONLY(rep, rp);
544 if (F_ISSET(rep, REP_F_MASTER))
549 CLIENT_ONLY(rep, rp);
559 CLIENT_ONLY(rep, rp);
568 MASTER_ONLY(rep, rp);
574 CLIENT_ONLY(rep, rp);
588 /* We don't hold the rep mutex, and may miscount. */
589 STAT(rep->stat.st_newsites++);
592 if (F_ISSET(rep, REP_F_MASTER)) {
623 if (F_ISSET(rep, REP_F_CLIENT)) {
625 egen_arg.egen = rep->egen;
632 if (eid == rep->master_id) {
633 rep->master_id = DB_EID_INVALID;
640 if (F_ISSET(rep, REP_F_READY_MSG))
648 __rep_lockout_msg(env, rep, 1)) != 0) {
659 MUTEX_LOCK(env, rep->mtx_clientdb);
666 if (F_ISSET(rep, REP_F_READY_API |
671 rep, DB_FORCE);
672 F_CLR(rep, REP_F_RECOVER_MASK);
674 MUTEX_UNLOCK(env, rep->mtx_clientdb);
681 F_CLR(rep, REP_F_READY_MSG);
685 if (rep->version < DB_REPVERSION_47)
701 if (F_ISSET(rep, REP_F_MASTER)) {
716 if (F_ISSET(rep, REP_F_CLIENT) && rp->gen < gen) {
718 egen_arg.egen = rep->egen;
719 if (eid == rep->master_id)
720 rep->master_id = DB_EID_INVALID;
722 if (rep->version < DB_REPVERSION_47)
737 CLIENT_ONLY(rep, rp);
741 ret = __rep_logready(env, rep, savetime, &last_lsn);
747 ANYSITE(rep);
748 if (F_ISSET(rep, REP_F_MASTER) &&
749 eid != rep->eid) {
750 /* We don't hold the rep mutex, and may miscount. */
751 STAT(rep->stat.st_dupmasters++);
772 CLIENT_ONLY(rep, rp);
781 CLIENT_ONLY(rep, rp);
795 CLIENT_ONLY(rep, rp);
799 STAT(rep->stat.st_client_rerequests++);
804 MUTEX_LOCK(env, rep->mtx_clientdb);
816 MUTEX_UNLOCK(env, rep->mtx_clientdb);
819 STAT(rep->stat.st_startsync_delayed++);
828 if (LOG_COMPARE(&rp->lsn, &rep->ckp_lsn) > 0)
829 rep->ckp_lsn = rp->lsn;
835 (u_long)rep->ckp_lsn.file, (u_long)rep->ckp_lsn.offset));
836 MUTEX_UNLOCK(env, rep->mtx_clientdb);
843 CLIENT_ONLY(rep, rp);
850 MASTER_ONLY(rep, rp);
858 MUTEX_LOCK(env, rep->mtx_clientdb);
860 MUTEX_UNLOCK(env, rep->mtx_clientdb);
866 env, rep, eid, rp->rectype);
870 CLIENT_ONLY(rep, rp);
877 CLIENT_ONLY(rep, rp);
908 F_CLR(rep, REP_F_READY_MSG);
909 rep->msg_th--;
912 MUTEX_LOCK(env, rep->mtx_ckp);
920 MUTEX_UNLOCK(env, rep->mtx_ckp);
942 * __rep_process_rec, when possible and enqueuing in the __db.rep.db
944 * we try to process as much as possible from __db.rep.db to catch up.
966 REP *rep;
975 rep = db_rep->region;
985 MUTEX_LOCK(env, rep->mtx_clientdb);
992 MUTEX_UNLOCK(env, rep->mtx_clientdb);
998 if (F_ISSET(rep, REP_F_RECOVER_LOG) &&
999 LOG_COMPARE(&lp->ready_lsn, &rep->first_lsn) < 0)
1000 lp->ready_lsn = rep->first_lsn;
1007 if (F_ISSET(rep, REP_F_READY_APPLY) && cmp >= 0)
1008 F_SET(rep, REP_F_SKIPPED_APPLY);
1018 if (F_ISSET(rep, REP_F_NEWFILE) && cmp == 0)
1033 if (F_ISSET(rep, REP_F_READY_APPLY)) {
1044 MUTEX_UNLOCK(env, rep->mtx_clientdb);
1047 rep->apply_th++;
1050 "rep_apply: Set apply_th %d", rep->apply_th));
1081 --rep->stat.st_log_queued;
1096 lp->wait_ts = rep->request_gap;
1118 if (__rep_check_doreq(env, rep) && (ret =
1119 __rep_loggap_req(env, rep, &rp->lsn, 0)) != 0)
1122 lp->wait_ts = rep->request_gap;
1140 rep->stat.st_log_queued++;
1143 STAT(rep->stat.st_log_queued_total++);
1144 if (rep->stat.st_log_queued_max <
1145 rep->stat.st_log_queued)
1146 rep->stat.st_log_queued_max =
1147 rep->stat.st_log_queued;
1160 if (__rep_check_doreq(env, rep) &&
1161 (ret = __rep_loggap_req(env, rep, &rp->lsn, 0) != 0))
1174 STAT(rep->stat.st_log_duplicated++);
1204 * DB_REP_LOGREADY, zero out rep->last_lsn to show that we've gotten to
1209 F_ISSET(rep, REP_F_RECOVER_LOG) &&
1210 !IS_ZERO_LSN(rep->last_lsn) &&
1211 LOG_COMPARE(&lp->ready_lsn, &rep->last_lsn) >= 0) {
1213 ZERO_LSN(rep->last_lsn);
1223 rep->apply_th--;
1225 "rep_apply: Decrement apply_th %d", rep->apply_th));
1228 if (ret == 0 && !F_ISSET(rep, REP_F_RECOVER_LOG) &&
1245 rep->stat.st_startup_complete == 0 &&
1246 !F_ISSET(rep, REP_F_RECOVER_LOG) &&
1249 rep->stat.st_startup_complete = 1;
1251 gen = rep->gen;
1252 master = rep->master_id;
1265 if (!IS_ZERO_LSN(rep->ckp_lsn) &&
1266 LOG_COMPARE(&lp->ready_lsn, &rep->ckp_lsn) >= 0) {
1267 save_lsn = rep->ckp_lsn;
1268 ZERO_LSN(rep->ckp_lsn);
1285 MUTEX_UNLOCK(env, rep->mtx_clientdb);
1290 MUTEX_LOCK(env, rep->mtx_ckp);
1295 MUTEX_UNLOCK(env, rep->mtx_ckp);
1332 if (!F_ISSET(rep, REP_F_RECOVER_LOG) &&
1372 REP *rep;
1381 rep = db_rep->region;
1409 if (rep->version >= DB_REPVERSION_44) {
1509 * We don't hold the rep mutex, and could miscount if we race.
1511 rep->stat.st_txns_applied++;
1617 REP *rep;
1624 rep = db_rep->region;
1629 if (F_ISSET(rep, REP_F_NEWFILE))
1656 F_SET(rep, REP_F_NEWFILE);
1658 MUTEX_UNLOCK(env, rep->mtx_clientdb);
1662 MUTEX_LOCK(env, rep->mtx_clientdb);
1664 F_CLR(rep, REP_F_NEWFILE);
1689 REP *rep;
1700 rep = env->rep_handle->region;
1702 MUTEX_UNLOCK(env, rep->mtx_clientdb);
1717 MUTEX_LOCK(env, rep->mtx_ckp);
1719 MUTEX_UNLOCK(env, rep->mtx_ckp);
1731 MUTEX_LOCK(env, rep->mtx_clientdb);
1737 * Remove the first entry from the __db.rep.db
1769 * Get the next record out of the __db.rep.db table.
1851 REP *rep;
1857 rep = db_rep->region;
1889 if (rectype != DB___txn_ckp || F_ISSET(rep, REP_F_RECOVER_LOG)) {
1892 STAT(rep->stat.st_log_records++);
1893 if (F_ISSET(rep, REP_F_RECOVER_LOG)) {
1957 rep->max_prep_lsn = rp->lsn;
1960 (u_long)rep->max_prep_lsn.file,
1961 (u_long)rep->max_prep_lsn.offset));
1967 * supposed to process, add it to the __db.rep.db, do the
2054 REP *rep;
2059 rep = db_rep->region;
2064 repflags = rep->flags;
2073 MUTEX_LOCK(env, rep->mtx_clientdb);
2075 MUTEX_UNLOCK(env, rep->mtx_clientdb);
2077 (void)__rep_send_message(env, rep->master_id,
2083 (void)__rep_send_message(env, rep->master_id,
2087 ret = __rep_pggap_req(env, rep, NULL, gapflags);
2090 MUTEX_LOCK(env, rep->mtx_clientdb);
2091 ret = __rep_loggap_req(env, rep, NULL, gapflags);
2092 MUTEX_UNLOCK(env, rep->mtx_clientdb);
2108 __rep_check_doreq(env, rep)
2110 REP *rep;
2128 if (timespeccmp(&lp->wait_ts, &rep->max_gap, >))
2129 lp->wait_ts = rep->max_gap;
2142 __rep_skip_msg(env, rep, eid, rectype)
2144 REP *rep;
2155 if (F_ISSET(rep, REP_F_CLIENT) && REP_MSG_REQ(rectype))
2159 MUTEX_LOCK(env, rep->mtx_clientdb);
2160 do_req = __rep_check_doreq(env, rep);
2161 MUTEX_UNLOCK(env, rep->mtx_clientdb);
2177 if (rep->master_id == DB_EID_INVALID) /* Case 1. */
2180 else if (eid == rep->master_id) /* Case 2. */
2182 else if (F_ISSET(rep, REP_F_CLIENT)) /* Case 3. */
2196 REP *rep;
2199 rep = db_rep->region;
2206 if (rep->newmaster_event_gen < gen) {
2208 rep->newmaster_event_gen = gen;
2221 REP *rep;
2224 rep = db_rep->region;
2232 if (rep->newmaster_event_gen < gen) {
2234 rep->newmaster_event_gen = gen;
2246 if (rep->newmaster_event_gen == gen)