1
/* Do not edit: automatically built by gen_rec.awk. */
4
#ifndef NO_SYSTEM_INCLUDES
13
#include "db_dispatch.h"
18
* PUBLIC: int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
19
* PUBLIC: u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *,
23
__db_addrem_log(dbenv, txnid, ret_lsnp, flags,
24
opcode, fileid, pgno, indx, nbytes, hdr,
40
DB_LSN *lsnp, null_lsn;
42
u_int32_t rectype, txn_num;
46
rectype = DB_db_addrem;
48
TAILQ_FIRST(&txnid->kids) != NULL &&
49
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
51
txn_num = txnid == NULL ? 0 : txnid->txnid;
56
lsnp = &txnid->last_lsn;
57
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
63
+ sizeof(u_int32_t) + (hdr == NULL ? 0 : hdr->size)
64
+ sizeof(u_int32_t) + (dbt == NULL ? 0 : dbt->size)
66
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
70
memcpy(bp, &rectype, sizeof(rectype));
71
bp += sizeof(rectype);
72
memcpy(bp, &txn_num, sizeof(txn_num));
73
bp += sizeof(txn_num);
74
memcpy(bp, lsnp, sizeof(DB_LSN));
76
memcpy(bp, &opcode, sizeof(opcode));
78
memcpy(bp, &fileid, sizeof(fileid));
80
memcpy(bp, &pgno, sizeof(pgno));
82
memcpy(bp, &indx, sizeof(indx));
84
memcpy(bp, &nbytes, sizeof(nbytes));
88
memcpy(bp, &zero, sizeof(u_int32_t));
89
bp += sizeof(u_int32_t);
91
memcpy(bp, &hdr->size, sizeof(hdr->size));
92
bp += sizeof(hdr->size);
93
memcpy(bp, hdr->data, hdr->size);
98
memcpy(bp, &zero, sizeof(u_int32_t));
99
bp += sizeof(u_int32_t);
101
memcpy(bp, &dbt->size, sizeof(dbt->size));
102
bp += sizeof(dbt->size);
103
memcpy(bp, dbt->data, dbt->size);
107
memcpy(bp, pagelsn, sizeof(*pagelsn));
109
memset(bp, 0, sizeof(*pagelsn));
110
bp += sizeof(*pagelsn);
111
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
112
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
113
if (txnid != NULL && ret == 0)
114
txnid->last_lsn = *ret_lsnp;
115
#ifdef LOG_DIAGNOSTIC
117
(void)__db_addrem_print(dbenv,
118
(DBT *)&logrec, ret_lsnp, NULL, NULL);
120
__os_free(dbenv, logrec.data, logrec.size);
125
* PUBLIC: int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
129
__db_addrem_print(dbenv, dbtp, lsnp, notused2, notused3)
136
__db_addrem_args *argp;
143
notused2 = DB_TXN_ABORT;
146
if ((ret = __db_addrem_read(dbenv, dbtp->data, &argp)) != 0)
149
"[%lu][%lu]db_addrem: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
151
(u_long)lsnp->offset,
153
(u_long)argp->txnid->txnid,
154
(u_long)argp->prev_lsn.file,
155
(u_long)argp->prev_lsn.offset);
156
(void)printf("\topcode: %lu\n", (u_long)argp->opcode);
157
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
158
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
159
(void)printf("\tindx: %lu\n", (u_long)argp->indx);
160
(void)printf("\tnbytes: %lu\n", (u_long)argp->nbytes);
161
(void)printf("\thdr: ");
162
for (i = 0; i < argp->hdr.size; i++) {
163
ch = ((u_int8_t *)argp->hdr.data)[i];
164
if (isprint(ch) || ch == 0xa)
167
(void)printf("%#x ", ch);
170
(void)printf("\tdbt: ");
171
for (i = 0; i < argp->dbt.size; i++) {
172
ch = ((u_int8_t *)argp->dbt.data)[i];
173
if (isprint(ch) || ch == 0xa)
176
(void)printf("%#x ", ch);
179
(void)printf("\tpagelsn: [%lu][%lu]\n",
180
(u_long)argp->pagelsn.file, (u_long)argp->pagelsn.offset);
182
__os_free(dbenv, argp, 0);
187
* PUBLIC: int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
190
__db_addrem_read(dbenv, recbuf, argpp)
193
__db_addrem_args **argpp;
195
__db_addrem_args *argp;
199
ret = __os_malloc(dbenv, sizeof(__db_addrem_args) +
200
sizeof(DB_TXN), &argp);
203
argp->txnid = (DB_TXN *)&argp[1];
205
memcpy(&argp->type, bp, sizeof(argp->type));
206
bp += sizeof(argp->type);
207
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
208
bp += sizeof(argp->txnid->txnid);
209
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
210
bp += sizeof(DB_LSN);
211
memcpy(&argp->opcode, bp, sizeof(argp->opcode));
212
bp += sizeof(argp->opcode);
213
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
214
bp += sizeof(argp->fileid);
215
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
216
bp += sizeof(argp->pgno);
217
memcpy(&argp->indx, bp, sizeof(argp->indx));
218
bp += sizeof(argp->indx);
219
memcpy(&argp->nbytes, bp, sizeof(argp->nbytes));
220
bp += sizeof(argp->nbytes);
221
memset(&argp->hdr, 0, sizeof(argp->hdr));
222
memcpy(&argp->hdr.size, bp, sizeof(u_int32_t));
223
bp += sizeof(u_int32_t);
225
bp += argp->hdr.size;
226
memset(&argp->dbt, 0, sizeof(argp->dbt));
227
memcpy(&argp->dbt.size, bp, sizeof(u_int32_t));
228
bp += sizeof(u_int32_t);
230
bp += argp->dbt.size;
231
memcpy(&argp->pagelsn, bp, sizeof(argp->pagelsn));
232
bp += sizeof(argp->pagelsn);
238
* PUBLIC: int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
242
__db_split_print(dbenv, dbtp, lsnp, notused2, notused3)
249
__db_split_args *argp;
256
notused2 = DB_TXN_ABORT;
259
if ((ret = __db_split_read(dbenv, dbtp->data, &argp)) != 0)
262
"[%lu][%lu]db_split: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
264
(u_long)lsnp->offset,
266
(u_long)argp->txnid->txnid,
267
(u_long)argp->prev_lsn.file,
268
(u_long)argp->prev_lsn.offset);
269
(void)printf("\topcode: %lu\n", (u_long)argp->opcode);
270
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
271
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
272
(void)printf("\tpageimage: ");
273
for (i = 0; i < argp->pageimage.size; i++) {
274
ch = ((u_int8_t *)argp->pageimage.data)[i];
275
if (isprint(ch) || ch == 0xa)
278
(void)printf("%#x ", ch);
281
(void)printf("\tpagelsn: [%lu][%lu]\n",
282
(u_long)argp->pagelsn.file, (u_long)argp->pagelsn.offset);
284
__os_free(dbenv, argp, 0);
289
* PUBLIC: int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
292
__db_split_read(dbenv, recbuf, argpp)
295
__db_split_args **argpp;
297
__db_split_args *argp;
301
ret = __os_malloc(dbenv, sizeof(__db_split_args) +
302
sizeof(DB_TXN), &argp);
305
argp->txnid = (DB_TXN *)&argp[1];
307
memcpy(&argp->type, bp, sizeof(argp->type));
308
bp += sizeof(argp->type);
309
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
310
bp += sizeof(argp->txnid->txnid);
311
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
312
bp += sizeof(DB_LSN);
313
memcpy(&argp->opcode, bp, sizeof(argp->opcode));
314
bp += sizeof(argp->opcode);
315
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
316
bp += sizeof(argp->fileid);
317
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
318
bp += sizeof(argp->pgno);
319
memset(&argp->pageimage, 0, sizeof(argp->pageimage));
320
memcpy(&argp->pageimage.size, bp, sizeof(u_int32_t));
321
bp += sizeof(u_int32_t);
322
argp->pageimage.data = bp;
323
bp += argp->pageimage.size;
324
memcpy(&argp->pagelsn, bp, sizeof(argp->pagelsn));
325
bp += sizeof(argp->pagelsn);
331
* PUBLIC: int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
332
* PUBLIC: u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *,
333
* PUBLIC: DB_LSN *, DB_LSN *));
336
__db_big_log(dbenv, txnid, ret_lsnp, flags,
337
opcode, fileid, pgno, prev_pgno, next_pgno, dbt,
338
pagelsn, prevlsn, nextlsn)
354
DB_LSN *lsnp, null_lsn;
356
u_int32_t rectype, txn_num;
362
TAILQ_FIRST(&txnid->kids) != NULL &&
363
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
365
txn_num = txnid == NULL ? 0 : txnid->txnid;
370
lsnp = &txnid->last_lsn;
371
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
377
+ sizeof(u_int32_t) + (dbt == NULL ? 0 : dbt->size)
381
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
385
memcpy(bp, &rectype, sizeof(rectype));
386
bp += sizeof(rectype);
387
memcpy(bp, &txn_num, sizeof(txn_num));
388
bp += sizeof(txn_num);
389
memcpy(bp, lsnp, sizeof(DB_LSN));
390
bp += sizeof(DB_LSN);
391
memcpy(bp, &opcode, sizeof(opcode));
392
bp += sizeof(opcode);
393
memcpy(bp, &fileid, sizeof(fileid));
394
bp += sizeof(fileid);
395
memcpy(bp, &pgno, sizeof(pgno));
397
memcpy(bp, &prev_pgno, sizeof(prev_pgno));
398
bp += sizeof(prev_pgno);
399
memcpy(bp, &next_pgno, sizeof(next_pgno));
400
bp += sizeof(next_pgno);
403
memcpy(bp, &zero, sizeof(u_int32_t));
404
bp += sizeof(u_int32_t);
406
memcpy(bp, &dbt->size, sizeof(dbt->size));
407
bp += sizeof(dbt->size);
408
memcpy(bp, dbt->data, dbt->size);
412
memcpy(bp, pagelsn, sizeof(*pagelsn));
414
memset(bp, 0, sizeof(*pagelsn));
415
bp += sizeof(*pagelsn);
417
memcpy(bp, prevlsn, sizeof(*prevlsn));
419
memset(bp, 0, sizeof(*prevlsn));
420
bp += sizeof(*prevlsn);
422
memcpy(bp, nextlsn, sizeof(*nextlsn));
424
memset(bp, 0, sizeof(*nextlsn));
425
bp += sizeof(*nextlsn);
426
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
427
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
428
if (txnid != NULL && ret == 0)
429
txnid->last_lsn = *ret_lsnp;
430
#ifdef LOG_DIAGNOSTIC
432
(void)__db_big_print(dbenv,
433
(DBT *)&logrec, ret_lsnp, NULL, NULL);
435
__os_free(dbenv, logrec.data, logrec.size);
440
* PUBLIC: int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
444
__db_big_print(dbenv, dbtp, lsnp, notused2, notused3)
458
notused2 = DB_TXN_ABORT;
461
if ((ret = __db_big_read(dbenv, dbtp->data, &argp)) != 0)
464
"[%lu][%lu]db_big: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
466
(u_long)lsnp->offset,
468
(u_long)argp->txnid->txnid,
469
(u_long)argp->prev_lsn.file,
470
(u_long)argp->prev_lsn.offset);
471
(void)printf("\topcode: %lu\n", (u_long)argp->opcode);
472
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
473
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
474
(void)printf("\tprev_pgno: %lu\n", (u_long)argp->prev_pgno);
475
(void)printf("\tnext_pgno: %lu\n", (u_long)argp->next_pgno);
476
(void)printf("\tdbt: ");
477
for (i = 0; i < argp->dbt.size; i++) {
478
ch = ((u_int8_t *)argp->dbt.data)[i];
479
if (isprint(ch) || ch == 0xa)
482
(void)printf("%#x ", ch);
485
(void)printf("\tpagelsn: [%lu][%lu]\n",
486
(u_long)argp->pagelsn.file, (u_long)argp->pagelsn.offset);
487
(void)printf("\tprevlsn: [%lu][%lu]\n",
488
(u_long)argp->prevlsn.file, (u_long)argp->prevlsn.offset);
489
(void)printf("\tnextlsn: [%lu][%lu]\n",
490
(u_long)argp->nextlsn.file, (u_long)argp->nextlsn.offset);
492
__os_free(dbenv, argp, 0);
497
* PUBLIC: int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
500
__db_big_read(dbenv, recbuf, argpp)
503
__db_big_args **argpp;
509
ret = __os_malloc(dbenv, sizeof(__db_big_args) +
510
sizeof(DB_TXN), &argp);
513
argp->txnid = (DB_TXN *)&argp[1];
515
memcpy(&argp->type, bp, sizeof(argp->type));
516
bp += sizeof(argp->type);
517
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
518
bp += sizeof(argp->txnid->txnid);
519
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
520
bp += sizeof(DB_LSN);
521
memcpy(&argp->opcode, bp, sizeof(argp->opcode));
522
bp += sizeof(argp->opcode);
523
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
524
bp += sizeof(argp->fileid);
525
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
526
bp += sizeof(argp->pgno);
527
memcpy(&argp->prev_pgno, bp, sizeof(argp->prev_pgno));
528
bp += sizeof(argp->prev_pgno);
529
memcpy(&argp->next_pgno, bp, sizeof(argp->next_pgno));
530
bp += sizeof(argp->next_pgno);
531
memset(&argp->dbt, 0, sizeof(argp->dbt));
532
memcpy(&argp->dbt.size, bp, sizeof(u_int32_t));
533
bp += sizeof(u_int32_t);
535
bp += argp->dbt.size;
536
memcpy(&argp->pagelsn, bp, sizeof(argp->pagelsn));
537
bp += sizeof(argp->pagelsn);
538
memcpy(&argp->prevlsn, bp, sizeof(argp->prevlsn));
539
bp += sizeof(argp->prevlsn);
540
memcpy(&argp->nextlsn, bp, sizeof(argp->nextlsn));
541
bp += sizeof(argp->nextlsn);
547
* PUBLIC: int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
548
* PUBLIC: int32_t, db_pgno_t, int32_t, DB_LSN *));
551
__db_ovref_log(dbenv, txnid, ret_lsnp, flags,
552
fileid, pgno, adjust, lsn)
563
DB_LSN *lsnp, null_lsn;
564
u_int32_t rectype, txn_num;
568
rectype = DB_db_ovref;
570
TAILQ_FIRST(&txnid->kids) != NULL &&
571
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
573
txn_num = txnid == NULL ? 0 : txnid->txnid;
578
lsnp = &txnid->last_lsn;
579
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
584
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
588
memcpy(bp, &rectype, sizeof(rectype));
589
bp += sizeof(rectype);
590
memcpy(bp, &txn_num, sizeof(txn_num));
591
bp += sizeof(txn_num);
592
memcpy(bp, lsnp, sizeof(DB_LSN));
593
bp += sizeof(DB_LSN);
594
memcpy(bp, &fileid, sizeof(fileid));
595
bp += sizeof(fileid);
596
memcpy(bp, &pgno, sizeof(pgno));
598
memcpy(bp, &adjust, sizeof(adjust));
599
bp += sizeof(adjust);
601
memcpy(bp, lsn, sizeof(*lsn));
603
memset(bp, 0, sizeof(*lsn));
605
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
606
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
607
if (txnid != NULL && ret == 0)
608
txnid->last_lsn = *ret_lsnp;
609
#ifdef LOG_DIAGNOSTIC
611
(void)__db_ovref_print(dbenv,
612
(DBT *)&logrec, ret_lsnp, NULL, NULL);
614
__os_free(dbenv, logrec.data, logrec.size);
619
* PUBLIC: int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
623
__db_ovref_print(dbenv, dbtp, lsnp, notused2, notused3)
630
__db_ovref_args *argp;
637
notused2 = DB_TXN_ABORT;
640
if ((ret = __db_ovref_read(dbenv, dbtp->data, &argp)) != 0)
643
"[%lu][%lu]db_ovref: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
645
(u_long)lsnp->offset,
647
(u_long)argp->txnid->txnid,
648
(u_long)argp->prev_lsn.file,
649
(u_long)argp->prev_lsn.offset);
650
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
651
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
652
(void)printf("\tadjust: %ld\n", (long)argp->adjust);
653
(void)printf("\tlsn: [%lu][%lu]\n",
654
(u_long)argp->lsn.file, (u_long)argp->lsn.offset);
656
__os_free(dbenv, argp, 0);
661
* PUBLIC: int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
664
__db_ovref_read(dbenv, recbuf, argpp)
667
__db_ovref_args **argpp;
669
__db_ovref_args *argp;
673
ret = __os_malloc(dbenv, sizeof(__db_ovref_args) +
674
sizeof(DB_TXN), &argp);
677
argp->txnid = (DB_TXN *)&argp[1];
679
memcpy(&argp->type, bp, sizeof(argp->type));
680
bp += sizeof(argp->type);
681
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
682
bp += sizeof(argp->txnid->txnid);
683
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
684
bp += sizeof(DB_LSN);
685
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
686
bp += sizeof(argp->fileid);
687
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
688
bp += sizeof(argp->pgno);
689
memcpy(&argp->adjust, bp, sizeof(argp->adjust));
690
bp += sizeof(argp->adjust);
691
memcpy(&argp->lsn, bp, sizeof(argp->lsn));
692
bp += sizeof(argp->lsn);
698
* PUBLIC: int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
699
* PUBLIC: u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t,
700
* PUBLIC: DB_LSN *));
703
__db_relink_log(dbenv, txnid, ret_lsnp, flags,
704
opcode, fileid, pgno, lsn, prev, lsn_prev,
720
DB_LSN *lsnp, null_lsn;
721
u_int32_t rectype, txn_num;
725
rectype = DB_db_relink;
727
TAILQ_FIRST(&txnid->kids) != NULL &&
728
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
730
txn_num = txnid == NULL ? 0 : txnid->txnid;
735
lsnp = &txnid->last_lsn;
736
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
745
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
749
memcpy(bp, &rectype, sizeof(rectype));
750
bp += sizeof(rectype);
751
memcpy(bp, &txn_num, sizeof(txn_num));
752
bp += sizeof(txn_num);
753
memcpy(bp, lsnp, sizeof(DB_LSN));
754
bp += sizeof(DB_LSN);
755
memcpy(bp, &opcode, sizeof(opcode));
756
bp += sizeof(opcode);
757
memcpy(bp, &fileid, sizeof(fileid));
758
bp += sizeof(fileid);
759
memcpy(bp, &pgno, sizeof(pgno));
762
memcpy(bp, lsn, sizeof(*lsn));
764
memset(bp, 0, sizeof(*lsn));
766
memcpy(bp, &prev, sizeof(prev));
768
if (lsn_prev != NULL)
769
memcpy(bp, lsn_prev, sizeof(*lsn_prev));
771
memset(bp, 0, sizeof(*lsn_prev));
772
bp += sizeof(*lsn_prev);
773
memcpy(bp, &next, sizeof(next));
775
if (lsn_next != NULL)
776
memcpy(bp, lsn_next, sizeof(*lsn_next));
778
memset(bp, 0, sizeof(*lsn_next));
779
bp += sizeof(*lsn_next);
780
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
781
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
782
if (txnid != NULL && ret == 0)
783
txnid->last_lsn = *ret_lsnp;
784
#ifdef LOG_DIAGNOSTIC
786
(void)__db_relink_print(dbenv,
787
(DBT *)&logrec, ret_lsnp, NULL, NULL);
789
__os_free(dbenv, logrec.data, logrec.size);
794
* PUBLIC: int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
798
__db_relink_print(dbenv, dbtp, lsnp, notused2, notused3)
805
__db_relink_args *argp;
812
notused2 = DB_TXN_ABORT;
815
if ((ret = __db_relink_read(dbenv, dbtp->data, &argp)) != 0)
818
"[%lu][%lu]db_relink: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
820
(u_long)lsnp->offset,
822
(u_long)argp->txnid->txnid,
823
(u_long)argp->prev_lsn.file,
824
(u_long)argp->prev_lsn.offset);
825
(void)printf("\topcode: %lu\n", (u_long)argp->opcode);
826
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
827
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
828
(void)printf("\tlsn: [%lu][%lu]\n",
829
(u_long)argp->lsn.file, (u_long)argp->lsn.offset);
830
(void)printf("\tprev: %lu\n", (u_long)argp->prev);
831
(void)printf("\tlsn_prev: [%lu][%lu]\n",
832
(u_long)argp->lsn_prev.file, (u_long)argp->lsn_prev.offset);
833
(void)printf("\tnext: %lu\n", (u_long)argp->next);
834
(void)printf("\tlsn_next: [%lu][%lu]\n",
835
(u_long)argp->lsn_next.file, (u_long)argp->lsn_next.offset);
837
__os_free(dbenv, argp, 0);
842
* PUBLIC: int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
845
__db_relink_read(dbenv, recbuf, argpp)
848
__db_relink_args **argpp;
850
__db_relink_args *argp;
854
ret = __os_malloc(dbenv, sizeof(__db_relink_args) +
855
sizeof(DB_TXN), &argp);
858
argp->txnid = (DB_TXN *)&argp[1];
860
memcpy(&argp->type, bp, sizeof(argp->type));
861
bp += sizeof(argp->type);
862
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
863
bp += sizeof(argp->txnid->txnid);
864
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
865
bp += sizeof(DB_LSN);
866
memcpy(&argp->opcode, bp, sizeof(argp->opcode));
867
bp += sizeof(argp->opcode);
868
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
869
bp += sizeof(argp->fileid);
870
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
871
bp += sizeof(argp->pgno);
872
memcpy(&argp->lsn, bp, sizeof(argp->lsn));
873
bp += sizeof(argp->lsn);
874
memcpy(&argp->prev, bp, sizeof(argp->prev));
875
bp += sizeof(argp->prev);
876
memcpy(&argp->lsn_prev, bp, sizeof(argp->lsn_prev));
877
bp += sizeof(argp->lsn_prev);
878
memcpy(&argp->next, bp, sizeof(argp->next));
879
bp += sizeof(argp->next);
880
memcpy(&argp->lsn_next, bp, sizeof(argp->lsn_next));
881
bp += sizeof(argp->lsn_next);
887
* PUBLIC: int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
891
__db_addpage_print(dbenv, dbtp, lsnp, notused2, notused3)
898
__db_addpage_args *argp;
905
notused2 = DB_TXN_ABORT;
908
if ((ret = __db_addpage_read(dbenv, dbtp->data, &argp)) != 0)
911
"[%lu][%lu]db_addpage: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
913
(u_long)lsnp->offset,
915
(u_long)argp->txnid->txnid,
916
(u_long)argp->prev_lsn.file,
917
(u_long)argp->prev_lsn.offset);
918
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
919
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
920
(void)printf("\tlsn: [%lu][%lu]\n",
921
(u_long)argp->lsn.file, (u_long)argp->lsn.offset);
922
(void)printf("\tnextpgno: %lu\n", (u_long)argp->nextpgno);
923
(void)printf("\tnextlsn: [%lu][%lu]\n",
924
(u_long)argp->nextlsn.file, (u_long)argp->nextlsn.offset);
926
__os_free(dbenv, argp, 0);
931
* PUBLIC: int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
934
__db_addpage_read(dbenv, recbuf, argpp)
937
__db_addpage_args **argpp;
939
__db_addpage_args *argp;
943
ret = __os_malloc(dbenv, sizeof(__db_addpage_args) +
944
sizeof(DB_TXN), &argp);
947
argp->txnid = (DB_TXN *)&argp[1];
949
memcpy(&argp->type, bp, sizeof(argp->type));
950
bp += sizeof(argp->type);
951
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
952
bp += sizeof(argp->txnid->txnid);
953
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
954
bp += sizeof(DB_LSN);
955
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
956
bp += sizeof(argp->fileid);
957
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
958
bp += sizeof(argp->pgno);
959
memcpy(&argp->lsn, bp, sizeof(argp->lsn));
960
bp += sizeof(argp->lsn);
961
memcpy(&argp->nextpgno, bp, sizeof(argp->nextpgno));
962
bp += sizeof(argp->nextpgno);
963
memcpy(&argp->nextlsn, bp, sizeof(argp->nextlsn));
964
bp += sizeof(argp->nextlsn);
970
* PUBLIC: int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
971
* PUBLIC: const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
974
__db_debug_log(dbenv, txnid, ret_lsnp, flags,
975
op, fileid, key, data, arg_flags)
987
DB_LSN *lsnp, null_lsn;
989
u_int32_t rectype, txn_num;
993
rectype = DB_db_debug;
995
TAILQ_FIRST(&txnid->kids) != NULL &&
996
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
998
txn_num = txnid == NULL ? 0 : txnid->txnid;
1003
lsnp = &txnid->last_lsn;
1004
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
1005
+ sizeof(u_int32_t) + (op == NULL ? 0 : op->size)
1007
+ sizeof(u_int32_t) + (key == NULL ? 0 : key->size)
1008
+ sizeof(u_int32_t) + (data == NULL ? 0 : data->size)
1009
+ sizeof(arg_flags);
1010
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
1014
memcpy(bp, &rectype, sizeof(rectype));
1015
bp += sizeof(rectype);
1016
memcpy(bp, &txn_num, sizeof(txn_num));
1017
bp += sizeof(txn_num);
1018
memcpy(bp, lsnp, sizeof(DB_LSN));
1019
bp += sizeof(DB_LSN);
1022
memcpy(bp, &zero, sizeof(u_int32_t));
1023
bp += sizeof(u_int32_t);
1025
memcpy(bp, &op->size, sizeof(op->size));
1026
bp += sizeof(op->size);
1027
memcpy(bp, op->data, op->size);
1030
memcpy(bp, &fileid, sizeof(fileid));
1031
bp += sizeof(fileid);
1034
memcpy(bp, &zero, sizeof(u_int32_t));
1035
bp += sizeof(u_int32_t);
1037
memcpy(bp, &key->size, sizeof(key->size));
1038
bp += sizeof(key->size);
1039
memcpy(bp, key->data, key->size);
1044
memcpy(bp, &zero, sizeof(u_int32_t));
1045
bp += sizeof(u_int32_t);
1047
memcpy(bp, &data->size, sizeof(data->size));
1048
bp += sizeof(data->size);
1049
memcpy(bp, data->data, data->size);
1052
memcpy(bp, &arg_flags, sizeof(arg_flags));
1053
bp += sizeof(arg_flags);
1054
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
1055
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
1056
if (txnid != NULL && ret == 0)
1057
txnid->last_lsn = *ret_lsnp;
1058
#ifdef LOG_DIAGNOSTIC
1060
(void)__db_debug_print(dbenv,
1061
(DBT *)&logrec, ret_lsnp, NULL, NULL);
1063
__os_free(dbenv, logrec.data, logrec.size);
1068
* PUBLIC: int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
1072
__db_debug_print(dbenv, dbtp, lsnp, notused2, notused3)
1079
__db_debug_args *argp;
1086
notused2 = DB_TXN_ABORT;
1089
if ((ret = __db_debug_read(dbenv, dbtp->data, &argp)) != 0)
1092
"[%lu][%lu]db_debug: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
1094
(u_long)lsnp->offset,
1096
(u_long)argp->txnid->txnid,
1097
(u_long)argp->prev_lsn.file,
1098
(u_long)argp->prev_lsn.offset);
1099
(void)printf("\top: ");
1100
for (i = 0; i < argp->op.size; i++) {
1101
ch = ((u_int8_t *)argp->op.data)[i];
1102
if (isprint(ch) || ch == 0xa)
1105
(void)printf("%#x ", ch);
1108
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
1109
(void)printf("\tkey: ");
1110
for (i = 0; i < argp->key.size; i++) {
1111
ch = ((u_int8_t *)argp->key.data)[i];
1112
if (isprint(ch) || ch == 0xa)
1115
(void)printf("%#x ", ch);
1118
(void)printf("\tdata: ");
1119
for (i = 0; i < argp->data.size; i++) {
1120
ch = ((u_int8_t *)argp->data.data)[i];
1121
if (isprint(ch) || ch == 0xa)
1124
(void)printf("%#x ", ch);
1127
(void)printf("\targ_flags: %lu\n", (u_long)argp->arg_flags);
1129
__os_free(dbenv, argp, 0);
1134
* PUBLIC: int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
1137
__db_debug_read(dbenv, recbuf, argpp)
1140
__db_debug_args **argpp;
1142
__db_debug_args *argp;
1146
ret = __os_malloc(dbenv, sizeof(__db_debug_args) +
1147
sizeof(DB_TXN), &argp);
1150
argp->txnid = (DB_TXN *)&argp[1];
1152
memcpy(&argp->type, bp, sizeof(argp->type));
1153
bp += sizeof(argp->type);
1154
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
1155
bp += sizeof(argp->txnid->txnid);
1156
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
1157
bp += sizeof(DB_LSN);
1158
memset(&argp->op, 0, sizeof(argp->op));
1159
memcpy(&argp->op.size, bp, sizeof(u_int32_t));
1160
bp += sizeof(u_int32_t);
1162
bp += argp->op.size;
1163
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
1164
bp += sizeof(argp->fileid);
1165
memset(&argp->key, 0, sizeof(argp->key));
1166
memcpy(&argp->key.size, bp, sizeof(u_int32_t));
1167
bp += sizeof(u_int32_t);
1168
argp->key.data = bp;
1169
bp += argp->key.size;
1170
memset(&argp->data, 0, sizeof(argp->data));
1171
memcpy(&argp->data.size, bp, sizeof(u_int32_t));
1172
bp += sizeof(u_int32_t);
1173
argp->data.data = bp;
1174
bp += argp->data.size;
1175
memcpy(&argp->arg_flags, bp, sizeof(argp->arg_flags));
1176
bp += sizeof(argp->arg_flags);
1182
* PUBLIC: int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t,
1183
* PUBLIC: int32_t, db_pgno_t, DB_LSN *));
1186
__db_noop_log(dbenv, txnid, ret_lsnp, flags,
1187
fileid, pgno, prevlsn)
1197
DB_LSN *lsnp, null_lsn;
1198
u_int32_t rectype, txn_num;
1202
rectype = DB_db_noop;
1203
if (txnid != NULL &&
1204
TAILQ_FIRST(&txnid->kids) != NULL &&
1205
(ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
1207
txn_num = txnid == NULL ? 0 : txnid->txnid;
1208
if (txnid == NULL) {
1212
lsnp = &txnid->last_lsn;
1213
logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
1217
if ((ret = __os_malloc(dbenv, logrec.size, &logrec.data)) != 0)
1221
memcpy(bp, &rectype, sizeof(rectype));
1222
bp += sizeof(rectype);
1223
memcpy(bp, &txn_num, sizeof(txn_num));
1224
bp += sizeof(txn_num);
1225
memcpy(bp, lsnp, sizeof(DB_LSN));
1226
bp += sizeof(DB_LSN);
1227
memcpy(bp, &fileid, sizeof(fileid));
1228
bp += sizeof(fileid);
1229
memcpy(bp, &pgno, sizeof(pgno));
1231
if (prevlsn != NULL)
1232
memcpy(bp, prevlsn, sizeof(*prevlsn));
1234
memset(bp, 0, sizeof(*prevlsn));
1235
bp += sizeof(*prevlsn);
1236
DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
1237
ret = log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
1238
if (txnid != NULL && ret == 0)
1239
txnid->last_lsn = *ret_lsnp;
1240
#ifdef LOG_DIAGNOSTIC
1242
(void)__db_noop_print(dbenv,
1243
(DBT *)&logrec, ret_lsnp, NULL, NULL);
1245
__os_free(dbenv, logrec.data, logrec.size);
1250
* PUBLIC: int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops,
1254
__db_noop_print(dbenv, dbtp, lsnp, notused2, notused3)
1261
__db_noop_args *argp;
1268
notused2 = DB_TXN_ABORT;
1271
if ((ret = __db_noop_read(dbenv, dbtp->data, &argp)) != 0)
1274
"[%lu][%lu]db_noop: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
1276
(u_long)lsnp->offset,
1278
(u_long)argp->txnid->txnid,
1279
(u_long)argp->prev_lsn.file,
1280
(u_long)argp->prev_lsn.offset);
1281
(void)printf("\tfileid: %ld\n", (long)argp->fileid);
1282
(void)printf("\tpgno: %lu\n", (u_long)argp->pgno);
1283
(void)printf("\tprevlsn: [%lu][%lu]\n",
1284
(u_long)argp->prevlsn.file, (u_long)argp->prevlsn.offset);
1286
__os_free(dbenv, argp, 0);
1291
* PUBLIC: int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
1294
__db_noop_read(dbenv, recbuf, argpp)
1297
__db_noop_args **argpp;
1299
__db_noop_args *argp;
1303
ret = __os_malloc(dbenv, sizeof(__db_noop_args) +
1304
sizeof(DB_TXN), &argp);
1307
argp->txnid = (DB_TXN *)&argp[1];
1309
memcpy(&argp->type, bp, sizeof(argp->type));
1310
bp += sizeof(argp->type);
1311
memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
1312
bp += sizeof(argp->txnid->txnid);
1313
memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
1314
bp += sizeof(DB_LSN);
1315
memcpy(&argp->fileid, bp, sizeof(argp->fileid));
1316
bp += sizeof(argp->fileid);
1317
memcpy(&argp->pgno, bp, sizeof(argp->pgno));
1318
bp += sizeof(argp->pgno);
1319
memcpy(&argp->prevlsn, bp, sizeof(argp->prevlsn));
1320
bp += sizeof(argp->prevlsn);
1326
* PUBLIC: int __db_init_print __P((DB_ENV *));
1329
__db_init_print(dbenv)
1334
if ((ret = __db_add_recovery(dbenv,
1335
__db_addrem_print, DB_db_addrem)) != 0)
1337
if ((ret = __db_add_recovery(dbenv,
1338
__db_split_print, DB_db_split)) != 0)
1340
if ((ret = __db_add_recovery(dbenv,
1341
__db_big_print, DB_db_big)) != 0)
1343
if ((ret = __db_add_recovery(dbenv,
1344
__db_ovref_print, DB_db_ovref)) != 0)
1346
if ((ret = __db_add_recovery(dbenv,
1347
__db_relink_print, DB_db_relink)) != 0)
1349
if ((ret = __db_add_recovery(dbenv,
1350
__db_addpage_print, DB_db_addpage)) != 0)
1352
if ((ret = __db_add_recovery(dbenv,
1353
__db_debug_print, DB_db_debug)) != 0)
1355
if ((ret = __db_add_recovery(dbenv,
1356
__db_noop_print, DB_db_noop)) != 0)
1362
* PUBLIC: int __db_init_recover __P((DB_ENV *));
1365
__db_init_recover(dbenv)
1370
if ((ret = __db_add_recovery(dbenv,
1371
__db_addrem_recover, DB_db_addrem)) != 0)
1373
if ((ret = __db_add_recovery(dbenv,
1374
__deprecated_recover, DB_db_split)) != 0)
1376
if ((ret = __db_add_recovery(dbenv,
1377
__db_big_recover, DB_db_big)) != 0)
1379
if ((ret = __db_add_recovery(dbenv,
1380
__db_ovref_recover, DB_db_ovref)) != 0)
1382
if ((ret = __db_add_recovery(dbenv,
1383
__db_relink_recover, DB_db_relink)) != 0)
1385
if ((ret = __db_add_recovery(dbenv,
1386
__deprecated_recover, DB_db_addpage)) != 0)
1388
if ((ret = __db_add_recovery(dbenv,
1389
__db_debug_recover, DB_db_debug)) != 0)
1391
if ((ret = __db_add_recovery(dbenv,
1392
__db_noop_recover, DB_db_noop)) != 0)