3
#ifndef NO_SYSTEM_INCLUDES
15
* __log_register1_recover --
16
* Recovery function for register1.
18
* PUBLIC: int __log_register1_recover
19
* PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
22
__log_register1_recover(dbenv, dbtp, lsnp, op, info)
29
__log_register1_args *argp;
34
int cmp_n, cmp_p, modified, ret;
36
REC_PRINT(__log_register1_print);
37
REC_INTRO(__log_register1_read);
39
if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
41
if ((ret = memp_fget(mpf,
42
&argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
45
*lsnp = argp->prev_lsn;
51
cmp_n = log_compare(lsnp, &LSN(pagep));
54
* Use this when there is something like "pagelsn" in the argp
55
* structure. Sometimes, you might need to compare meta-data
58
* cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
60
if (cmp_p == 0 && DB_REDO(op)) {
61
/* Need to redo update described. */
63
} else if (cmp_n == 0 && !DB_REDO(op)) {
64
/* Need to undo update described. */
67
if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
70
*lsnp = argp->prev_lsn;
77
* __log_register_recover --
78
* Recovery function for register.
80
* PUBLIC: int __log_register_recover
81
* PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
84
__log_register_recover(dbenv, dbtp, lsnp, op, info)
91
__log_register_args *argp;
96
int cmp_n, cmp_p, modified, ret;
98
REC_PRINT(__log_register_print);
99
REC_INTRO(__log_register_read);
101
if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
103
if ((ret = memp_fget(mpf,
104
&argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
107
*lsnp = argp->prev_lsn;
113
cmp_n = log_compare(lsnp, &LSN(pagep));
116
* Use this when there is something like "pagelsn" in the argp
117
* structure. Sometimes, you might need to compare meta-data
120
* cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
122
if (cmp_p == 0 && DB_REDO(op)) {
123
/* Need to redo update described. */
125
} else if (cmp_n == 0 && !DB_REDO(op)) {
126
/* Need to undo update described. */
129
if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
132
*lsnp = argp->prev_lsn;