diff options
Diffstat (limited to 'bdb/fileops/fileops_auto.c')
-rw-r--r-- | bdb/fileops/fileops_auto.c | 1371 |
1 files changed, 0 insertions, 1371 deletions
diff --git a/bdb/fileops/fileops_auto.c b/bdb/fileops/fileops_auto.c deleted file mode 100644 index f38640b7480..00000000000 --- a/bdb/fileops/fileops_auto.c +++ /dev/null @@ -1,1371 +0,0 @@ -/* Do not edit: automatically built by gen_rec.awk. */ -#include "db_config.h" - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <ctype.h> -#include <string.h> -#endif - -#include "db_int.h" -#include "dbinc/crypto.h" -#include "dbinc/db_page.h" -#include "dbinc/db_dispatch.h" -#include "dbinc/db_am.h" -#include "dbinc/log.h" -#include "dbinc/rep.h" -#include "dbinc/txn.h" -#include "dbinc/fop.h" - -/* - * PUBLIC: int __fop_create_log __P((DB_ENV *, DB_TXN *, DB_LSN *, - * PUBLIC: u_int32_t, const DBT *, u_int32_t, u_int32_t)); - */ -int -__fop_create_log(dbenv, txnid, ret_lsnp, flags, - name, appname, mode) - DB_ENV *dbenv; - DB_TXN *txnid; - DB_LSN *ret_lsnp; - u_int32_t flags; - const DBT *name; - u_int32_t appname; - u_int32_t mode; -{ - DBT logrec; - DB_LSN *lsnp, null_lsn; - u_int32_t zero; - u_int32_t uinttmp; - u_int32_t npad, rectype, txn_num; - int ret; - u_int8_t *bp; - - rectype = DB___fop_create; - npad = 0; - - if (txnid == NULL) { - txn_num = 0; - null_lsn.file = 0; - null_lsn.offset = 0; - lsnp = &null_lsn; - } else { - if (TAILQ_FIRST(&txnid->kids) != NULL && - (ret = __txn_activekids(dbenv, rectype, txnid)) != 0) - return (ret); - txn_num = txnid->txnid; - lsnp = &txnid->last_lsn; - } - - logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN) - + sizeof(u_int32_t) + (name == NULL ? 0 : name->size) - + sizeof(u_int32_t) - + sizeof(u_int32_t); - if (CRYPTO_ON(dbenv)) { - npad = - ((DB_CIPHER *)dbenv->crypto_handle)->adj_size(logrec.size); - logrec.size += npad; - } - - if ((ret = __os_malloc(dbenv, - logrec.size, &logrec.data)) != 0) - return (ret); - - if (npad > 0) - memset((u_int8_t *)logrec.data + logrec.size - npad, 0, npad); - - bp = logrec.data; - - memcpy(bp, &rectype, sizeof(rectype)); - bp += sizeof(rectype); - - memcpy(bp, &txn_num, sizeof(txn_num)); - bp += sizeof(txn_num); - - memcpy(bp, lsnp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - if (name == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &name->size, sizeof(name->size)); - bp += sizeof(name->size); - memcpy(bp, name->data, name->size); - bp += name->size; - } - - uinttmp = (u_int32_t)appname; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - uinttmp = (u_int32_t)mode; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) <= logrec.size); - ret = dbenv->log_put(dbenv, - ret_lsnp, (DBT *)&logrec, flags | DB_NOCOPY); - if (txnid != NULL && ret == 0) - txnid->last_lsn = *ret_lsnp; -#ifdef LOG_DIAGNOSTIC - if (ret != 0) - (void)__fop_create_print(dbenv, - (DBT *)&logrec, ret_lsnp, NULL, NULL); -#endif - __os_free(dbenv, logrec.data); - return (ret); -} - -/* - * PUBLIC: int __fop_create_getpgnos __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_create_getpgnos(dbenv, rec, lsnp, notused1, summary) - DB_ENV *dbenv; - DBT *rec; - DB_LSN *lsnp; - db_recops notused1; - void *summary; -{ - TXN_RECS *t; - int ret; - COMPQUIET(rec, NULL); - COMPQUIET(notused1, DB_TXN_ABORT); - - t = (TXN_RECS *)summary; - - if ((ret = __rep_check_alloc(dbenv, t, 1)) != 0) - return (ret); - - t->array[t->npages].flags = LSN_PAGE_NOLOCK; - t->array[t->npages].lsn = *lsnp; - t->array[t->npages].fid = DB_LOGFILEID_INVALID; - memset(&t->array[t->npages].pgdesc, 0, - sizeof(t->array[t->npages].pgdesc)); - - t->npages++; - - return (0); -} - -/* - * PUBLIC: int __fop_create_print __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_create_print(dbenv, dbtp, lsnp, notused2, notused3) - DB_ENV *dbenv; - DBT *dbtp; - DB_LSN *lsnp; - db_recops notused2; - void *notused3; -{ - __fop_create_args *argp; - u_int32_t i; - int ch; - int ret; - - notused2 = DB_TXN_ABORT; - notused3 = NULL; - - if ((ret = __fop_create_read(dbenv, dbtp->data, &argp)) != 0) - return (ret); - (void)printf( - "[%lu][%lu]__fop_create: rec: %lu txnid %lx prevlsn [%lu][%lu]\n", - (u_long)lsnp->file, - (u_long)lsnp->offset, - (u_long)argp->type, - (u_long)argp->txnid->txnid, - (u_long)argp->prev_lsn.file, - (u_long)argp->prev_lsn.offset); - (void)printf("\tname: "); - for (i = 0; i < argp->name.size; i++) { - ch = ((u_int8_t *)argp->name.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tappname: %lu\n", (u_long)argp->appname); - (void)printf("\tmode: %o\n", argp->mode); - (void)printf("\n"); - __os_free(dbenv, argp); - return (0); -} - -/* - * PUBLIC: int __fop_create_read __P((DB_ENV *, void *, __fop_create_args **)); - */ -int -__fop_create_read(dbenv, recbuf, argpp) - DB_ENV *dbenv; - void *recbuf; - __fop_create_args **argpp; -{ - __fop_create_args *argp; - u_int32_t uinttmp; - u_int8_t *bp; - int ret; - - if ((ret = __os_malloc(dbenv, - sizeof(__fop_create_args) + sizeof(DB_TXN), &argp)) != 0) - return (ret); - - argp->txnid = (DB_TXN *)&argp[1]; - - bp = recbuf; - memcpy(&argp->type, bp, sizeof(argp->type)); - bp += sizeof(argp->type); - - memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid)); - bp += sizeof(argp->txnid->txnid); - - memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - memset(&argp->name, 0, sizeof(argp->name)); - memcpy(&argp->name.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->name.data = bp; - bp += argp->name.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->appname = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->mode = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - *argpp = argp; - return (0); -} - -/* - * PUBLIC: int __fop_remove_log __P((DB_ENV *, DB_TXN *, DB_LSN *, - * PUBLIC: u_int32_t, const DBT *, const DBT *, u_int32_t)); - */ -int -__fop_remove_log(dbenv, txnid, ret_lsnp, flags, - name, fid, appname) - DB_ENV *dbenv; - DB_TXN *txnid; - DB_LSN *ret_lsnp; - u_int32_t flags; - const DBT *name; - const DBT *fid; - u_int32_t appname; -{ - DBT logrec; - DB_LSN *lsnp, null_lsn; - u_int32_t zero; - u_int32_t uinttmp; - u_int32_t npad, rectype, txn_num; - int ret; - u_int8_t *bp; - - rectype = DB___fop_remove; - npad = 0; - - if (txnid == NULL) { - txn_num = 0; - null_lsn.file = 0; - null_lsn.offset = 0; - lsnp = &null_lsn; - } else { - if (TAILQ_FIRST(&txnid->kids) != NULL && - (ret = __txn_activekids(dbenv, rectype, txnid)) != 0) - return (ret); - txn_num = txnid->txnid; - lsnp = &txnid->last_lsn; - } - - logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN) - + sizeof(u_int32_t) + (name == NULL ? 0 : name->size) - + sizeof(u_int32_t) + (fid == NULL ? 0 : fid->size) - + sizeof(u_int32_t); - if (CRYPTO_ON(dbenv)) { - npad = - ((DB_CIPHER *)dbenv->crypto_handle)->adj_size(logrec.size); - logrec.size += npad; - } - - if ((ret = __os_malloc(dbenv, - logrec.size, &logrec.data)) != 0) - return (ret); - - if (npad > 0) - memset((u_int8_t *)logrec.data + logrec.size - npad, 0, npad); - - bp = logrec.data; - - memcpy(bp, &rectype, sizeof(rectype)); - bp += sizeof(rectype); - - memcpy(bp, &txn_num, sizeof(txn_num)); - bp += sizeof(txn_num); - - memcpy(bp, lsnp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - if (name == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &name->size, sizeof(name->size)); - bp += sizeof(name->size); - memcpy(bp, name->data, name->size); - bp += name->size; - } - - if (fid == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &fid->size, sizeof(fid->size)); - bp += sizeof(fid->size); - memcpy(bp, fid->data, fid->size); - bp += fid->size; - } - - uinttmp = (u_int32_t)appname; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) <= logrec.size); - ret = dbenv->log_put(dbenv, - ret_lsnp, (DBT *)&logrec, flags | DB_NOCOPY); - if (txnid != NULL && ret == 0) - txnid->last_lsn = *ret_lsnp; -#ifdef LOG_DIAGNOSTIC - if (ret != 0) - (void)__fop_remove_print(dbenv, - (DBT *)&logrec, ret_lsnp, NULL, NULL); -#endif - __os_free(dbenv, logrec.data); - return (ret); -} - -/* - * PUBLIC: int __fop_remove_getpgnos __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_remove_getpgnos(dbenv, rec, lsnp, notused1, summary) - DB_ENV *dbenv; - DBT *rec; - DB_LSN *lsnp; - db_recops notused1; - void *summary; -{ - TXN_RECS *t; - int ret; - COMPQUIET(rec, NULL); - COMPQUIET(notused1, DB_TXN_ABORT); - - t = (TXN_RECS *)summary; - - if ((ret = __rep_check_alloc(dbenv, t, 1)) != 0) - return (ret); - - t->array[t->npages].flags = LSN_PAGE_NOLOCK; - t->array[t->npages].lsn = *lsnp; - t->array[t->npages].fid = DB_LOGFILEID_INVALID; - memset(&t->array[t->npages].pgdesc, 0, - sizeof(t->array[t->npages].pgdesc)); - - t->npages++; - - return (0); -} - -/* - * PUBLIC: int __fop_remove_print __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_remove_print(dbenv, dbtp, lsnp, notused2, notused3) - DB_ENV *dbenv; - DBT *dbtp; - DB_LSN *lsnp; - db_recops notused2; - void *notused3; -{ - __fop_remove_args *argp; - u_int32_t i; - int ch; - int ret; - - notused2 = DB_TXN_ABORT; - notused3 = NULL; - - if ((ret = __fop_remove_read(dbenv, dbtp->data, &argp)) != 0) - return (ret); - (void)printf( - "[%lu][%lu]__fop_remove: rec: %lu txnid %lx prevlsn [%lu][%lu]\n", - (u_long)lsnp->file, - (u_long)lsnp->offset, - (u_long)argp->type, - (u_long)argp->txnid->txnid, - (u_long)argp->prev_lsn.file, - (u_long)argp->prev_lsn.offset); - (void)printf("\tname: "); - for (i = 0; i < argp->name.size; i++) { - ch = ((u_int8_t *)argp->name.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tfid: "); - for (i = 0; i < argp->fid.size; i++) { - ch = ((u_int8_t *)argp->fid.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tappname: %lu\n", (u_long)argp->appname); - (void)printf("\n"); - __os_free(dbenv, argp); - return (0); -} - -/* - * PUBLIC: int __fop_remove_read __P((DB_ENV *, void *, __fop_remove_args **)); - */ -int -__fop_remove_read(dbenv, recbuf, argpp) - DB_ENV *dbenv; - void *recbuf; - __fop_remove_args **argpp; -{ - __fop_remove_args *argp; - u_int32_t uinttmp; - u_int8_t *bp; - int ret; - - if ((ret = __os_malloc(dbenv, - sizeof(__fop_remove_args) + sizeof(DB_TXN), &argp)) != 0) - return (ret); - - argp->txnid = (DB_TXN *)&argp[1]; - - bp = recbuf; - memcpy(&argp->type, bp, sizeof(argp->type)); - bp += sizeof(argp->type); - - memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid)); - bp += sizeof(argp->txnid->txnid); - - memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - memset(&argp->name, 0, sizeof(argp->name)); - memcpy(&argp->name.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->name.data = bp; - bp += argp->name.size; - - memset(&argp->fid, 0, sizeof(argp->fid)); - memcpy(&argp->fid.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->fid.data = bp; - bp += argp->fid.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->appname = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - *argpp = argp; - return (0); -} - -/* - * PUBLIC: int __fop_write_log __P((DB_ENV *, DB_TXN *, DB_LSN *, - * PUBLIC: u_int32_t, const DBT *, u_int32_t, u_int32_t, const DBT *, - * PUBLIC: u_int32_t)); - */ -int -__fop_write_log(dbenv, txnid, ret_lsnp, flags, - name, appname, offset, page, flag) - DB_ENV *dbenv; - DB_TXN *txnid; - DB_LSN *ret_lsnp; - u_int32_t flags; - const DBT *name; - u_int32_t appname; - u_int32_t offset; - const DBT *page; - u_int32_t flag; -{ - DBT logrec; - DB_LSN *lsnp, null_lsn; - u_int32_t zero; - u_int32_t uinttmp; - u_int32_t npad, rectype, txn_num; - int ret; - u_int8_t *bp; - - rectype = DB___fop_write; - npad = 0; - - if (txnid == NULL) { - txn_num = 0; - null_lsn.file = 0; - null_lsn.offset = 0; - lsnp = &null_lsn; - } else { - if (TAILQ_FIRST(&txnid->kids) != NULL && - (ret = __txn_activekids(dbenv, rectype, txnid)) != 0) - return (ret); - txn_num = txnid->txnid; - lsnp = &txnid->last_lsn; - } - - logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN) - + sizeof(u_int32_t) + (name == NULL ? 0 : name->size) - + sizeof(u_int32_t) - + sizeof(u_int32_t) - + sizeof(u_int32_t) + (page == NULL ? 0 : page->size) - + sizeof(u_int32_t); - if (CRYPTO_ON(dbenv)) { - npad = - ((DB_CIPHER *)dbenv->crypto_handle)->adj_size(logrec.size); - logrec.size += npad; - } - - if ((ret = __os_malloc(dbenv, - logrec.size, &logrec.data)) != 0) - return (ret); - - if (npad > 0) - memset((u_int8_t *)logrec.data + logrec.size - npad, 0, npad); - - bp = logrec.data; - - memcpy(bp, &rectype, sizeof(rectype)); - bp += sizeof(rectype); - - memcpy(bp, &txn_num, sizeof(txn_num)); - bp += sizeof(txn_num); - - memcpy(bp, lsnp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - if (name == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &name->size, sizeof(name->size)); - bp += sizeof(name->size); - memcpy(bp, name->data, name->size); - bp += name->size; - } - - uinttmp = (u_int32_t)appname; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - uinttmp = (u_int32_t)offset; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - if (page == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &page->size, sizeof(page->size)); - bp += sizeof(page->size); - memcpy(bp, page->data, page->size); - bp += page->size; - } - - uinttmp = (u_int32_t)flag; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) <= logrec.size); - ret = dbenv->log_put(dbenv, - ret_lsnp, (DBT *)&logrec, flags | DB_NOCOPY); - if (txnid != NULL && ret == 0) - txnid->last_lsn = *ret_lsnp; -#ifdef LOG_DIAGNOSTIC - if (ret != 0) - (void)__fop_write_print(dbenv, - (DBT *)&logrec, ret_lsnp, NULL, NULL); -#endif - __os_free(dbenv, logrec.data); - return (ret); -} - -/* - * PUBLIC: int __fop_write_getpgnos __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_write_getpgnos(dbenv, rec, lsnp, notused1, summary) - DB_ENV *dbenv; - DBT *rec; - DB_LSN *lsnp; - db_recops notused1; - void *summary; -{ - TXN_RECS *t; - int ret; - COMPQUIET(rec, NULL); - COMPQUIET(notused1, DB_TXN_ABORT); - - t = (TXN_RECS *)summary; - - if ((ret = __rep_check_alloc(dbenv, t, 1)) != 0) - return (ret); - - t->array[t->npages].flags = LSN_PAGE_NOLOCK; - t->array[t->npages].lsn = *lsnp; - t->array[t->npages].fid = DB_LOGFILEID_INVALID; - memset(&t->array[t->npages].pgdesc, 0, - sizeof(t->array[t->npages].pgdesc)); - - t->npages++; - - return (0); -} - -/* - * PUBLIC: int __fop_write_print __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_write_print(dbenv, dbtp, lsnp, notused2, notused3) - DB_ENV *dbenv; - DBT *dbtp; - DB_LSN *lsnp; - db_recops notused2; - void *notused3; -{ - __fop_write_args *argp; - u_int32_t i; - int ch; - int ret; - - notused2 = DB_TXN_ABORT; - notused3 = NULL; - - if ((ret = __fop_write_read(dbenv, dbtp->data, &argp)) != 0) - return (ret); - (void)printf( - "[%lu][%lu]__fop_write: rec: %lu txnid %lx prevlsn [%lu][%lu]\n", - (u_long)lsnp->file, - (u_long)lsnp->offset, - (u_long)argp->type, - (u_long)argp->txnid->txnid, - (u_long)argp->prev_lsn.file, - (u_long)argp->prev_lsn.offset); - (void)printf("\tname: "); - for (i = 0; i < argp->name.size; i++) { - ch = ((u_int8_t *)argp->name.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tappname: %lu\n", (u_long)argp->appname); - (void)printf("\toffset: %lu\n", (u_long)argp->offset); - (void)printf("\tpage: "); - for (i = 0; i < argp->page.size; i++) { - ch = ((u_int8_t *)argp->page.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tflag: %lu\n", (u_long)argp->flag); - (void)printf("\n"); - __os_free(dbenv, argp); - return (0); -} - -/* - * PUBLIC: int __fop_write_read __P((DB_ENV *, void *, __fop_write_args **)); - */ -int -__fop_write_read(dbenv, recbuf, argpp) - DB_ENV *dbenv; - void *recbuf; - __fop_write_args **argpp; -{ - __fop_write_args *argp; - u_int32_t uinttmp; - u_int8_t *bp; - int ret; - - if ((ret = __os_malloc(dbenv, - sizeof(__fop_write_args) + sizeof(DB_TXN), &argp)) != 0) - return (ret); - - argp->txnid = (DB_TXN *)&argp[1]; - - bp = recbuf; - memcpy(&argp->type, bp, sizeof(argp->type)); - bp += sizeof(argp->type); - - memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid)); - bp += sizeof(argp->txnid->txnid); - - memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - memset(&argp->name, 0, sizeof(argp->name)); - memcpy(&argp->name.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->name.data = bp; - bp += argp->name.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->appname = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->offset = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - memset(&argp->page, 0, sizeof(argp->page)); - memcpy(&argp->page.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->page.data = bp; - bp += argp->page.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->flag = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - *argpp = argp; - return (0); -} - -/* - * PUBLIC: int __fop_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, - * PUBLIC: u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t)); - */ -int -__fop_rename_log(dbenv, txnid, ret_lsnp, flags, - oldname, newname, fileid, appname) - DB_ENV *dbenv; - DB_TXN *txnid; - DB_LSN *ret_lsnp; - u_int32_t flags; - const DBT *oldname; - const DBT *newname; - const DBT *fileid; - u_int32_t appname; -{ - DBT logrec; - DB_LSN *lsnp, null_lsn; - u_int32_t zero; - u_int32_t uinttmp; - u_int32_t npad, rectype, txn_num; - int ret; - u_int8_t *bp; - - rectype = DB___fop_rename; - npad = 0; - - if (txnid == NULL) { - txn_num = 0; - null_lsn.file = 0; - null_lsn.offset = 0; - lsnp = &null_lsn; - } else { - if (TAILQ_FIRST(&txnid->kids) != NULL && - (ret = __txn_activekids(dbenv, rectype, txnid)) != 0) - return (ret); - txn_num = txnid->txnid; - lsnp = &txnid->last_lsn; - } - - logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN) - + sizeof(u_int32_t) + (oldname == NULL ? 0 : oldname->size) - + sizeof(u_int32_t) + (newname == NULL ? 0 : newname->size) - + sizeof(u_int32_t) + (fileid == NULL ? 0 : fileid->size) - + sizeof(u_int32_t); - if (CRYPTO_ON(dbenv)) { - npad = - ((DB_CIPHER *)dbenv->crypto_handle)->adj_size(logrec.size); - logrec.size += npad; - } - - if ((ret = __os_malloc(dbenv, - logrec.size, &logrec.data)) != 0) - return (ret); - - if (npad > 0) - memset((u_int8_t *)logrec.data + logrec.size - npad, 0, npad); - - bp = logrec.data; - - memcpy(bp, &rectype, sizeof(rectype)); - bp += sizeof(rectype); - - memcpy(bp, &txn_num, sizeof(txn_num)); - bp += sizeof(txn_num); - - memcpy(bp, lsnp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - if (oldname == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &oldname->size, sizeof(oldname->size)); - bp += sizeof(oldname->size); - memcpy(bp, oldname->data, oldname->size); - bp += oldname->size; - } - - if (newname == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &newname->size, sizeof(newname->size)); - bp += sizeof(newname->size); - memcpy(bp, newname->data, newname->size); - bp += newname->size; - } - - if (fileid == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &fileid->size, sizeof(fileid->size)); - bp += sizeof(fileid->size); - memcpy(bp, fileid->data, fileid->size); - bp += fileid->size; - } - - uinttmp = (u_int32_t)appname; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) <= logrec.size); - ret = dbenv->log_put(dbenv, - ret_lsnp, (DBT *)&logrec, flags | DB_NOCOPY); - if (txnid != NULL && ret == 0) - txnid->last_lsn = *ret_lsnp; -#ifdef LOG_DIAGNOSTIC - if (ret != 0) - (void)__fop_rename_print(dbenv, - (DBT *)&logrec, ret_lsnp, NULL, NULL); -#endif - __os_free(dbenv, logrec.data); - return (ret); -} - -/* - * PUBLIC: int __fop_rename_getpgnos __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_rename_getpgnos(dbenv, rec, lsnp, notused1, summary) - DB_ENV *dbenv; - DBT *rec; - DB_LSN *lsnp; - db_recops notused1; - void *summary; -{ - TXN_RECS *t; - int ret; - COMPQUIET(rec, NULL); - COMPQUIET(notused1, DB_TXN_ABORT); - - t = (TXN_RECS *)summary; - - if ((ret = __rep_check_alloc(dbenv, t, 1)) != 0) - return (ret); - - t->array[t->npages].flags = LSN_PAGE_NOLOCK; - t->array[t->npages].lsn = *lsnp; - t->array[t->npages].fid = DB_LOGFILEID_INVALID; - memset(&t->array[t->npages].pgdesc, 0, - sizeof(t->array[t->npages].pgdesc)); - - t->npages++; - - return (0); -} - -/* - * PUBLIC: int __fop_rename_print __P((DB_ENV *, DBT *, DB_LSN *, - * PUBLIC: db_recops, void *)); - */ -int -__fop_rename_print(dbenv, dbtp, lsnp, notused2, notused3) - DB_ENV *dbenv; - DBT *dbtp; - DB_LSN *lsnp; - db_recops notused2; - void *notused3; -{ - __fop_rename_args *argp; - u_int32_t i; - int ch; - int ret; - - notused2 = DB_TXN_ABORT; - notused3 = NULL; - - if ((ret = __fop_rename_read(dbenv, dbtp->data, &argp)) != 0) - return (ret); - (void)printf( - "[%lu][%lu]__fop_rename: rec: %lu txnid %lx prevlsn [%lu][%lu]\n", - (u_long)lsnp->file, - (u_long)lsnp->offset, - (u_long)argp->type, - (u_long)argp->txnid->txnid, - (u_long)argp->prev_lsn.file, - (u_long)argp->prev_lsn.offset); - (void)printf("\toldname: "); - for (i = 0; i < argp->oldname.size; i++) { - ch = ((u_int8_t *)argp->oldname.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tnewname: "); - for (i = 0; i < argp->newname.size; i++) { - ch = ((u_int8_t *)argp->newname.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tfileid: "); - for (i = 0; i < argp->fileid.size; i++) { - ch = ((u_int8_t *)argp->fileid.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tappname: %lu\n", (u_long)argp->appname); - (void)printf("\n"); - __os_free(dbenv, argp); - return (0); -} - -/* - * PUBLIC: int __fop_rename_read __P((DB_ENV *, void *, __fop_rename_args **)); - */ -int -__fop_rename_read(dbenv, recbuf, argpp) - DB_ENV *dbenv; - void *recbuf; - __fop_rename_args **argpp; -{ - __fop_rename_args *argp; - u_int32_t uinttmp; - u_int8_t *bp; - int ret; - - if ((ret = __os_malloc(dbenv, - sizeof(__fop_rename_args) + sizeof(DB_TXN), &argp)) != 0) - return (ret); - - argp->txnid = (DB_TXN *)&argp[1]; - - bp = recbuf; - memcpy(&argp->type, bp, sizeof(argp->type)); - bp += sizeof(argp->type); - - memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid)); - bp += sizeof(argp->txnid->txnid); - - memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - memset(&argp->oldname, 0, sizeof(argp->oldname)); - memcpy(&argp->oldname.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->oldname.data = bp; - bp += argp->oldname.size; - - memset(&argp->newname, 0, sizeof(argp->newname)); - memcpy(&argp->newname.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->newname.data = bp; - bp += argp->newname.size; - - memset(&argp->fileid, 0, sizeof(argp->fileid)); - memcpy(&argp->fileid.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->fileid.data = bp; - bp += argp->fileid.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->appname = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - *argpp = argp; - return (0); -} - -/* - * PUBLIC: int __fop_file_remove_log __P((DB_ENV *, DB_TXN *, - * PUBLIC: DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *, - * PUBLIC: u_int32_t, u_int32_t)); - */ -int -__fop_file_remove_log(dbenv, txnid, ret_lsnp, flags, - real_fid, tmp_fid, name, appname, child) - DB_ENV *dbenv; - DB_TXN *txnid; - DB_LSN *ret_lsnp; - u_int32_t flags; - const DBT *real_fid; - const DBT *tmp_fid; - const DBT *name; - u_int32_t appname; - u_int32_t child; -{ - DBT logrec; - DB_LSN *lsnp, null_lsn; - u_int32_t zero; - u_int32_t uinttmp; - u_int32_t npad, rectype, txn_num; - int ret; - u_int8_t *bp; - - rectype = DB___fop_file_remove; - npad = 0; - - if (txnid == NULL) { - txn_num = 0; - null_lsn.file = 0; - null_lsn.offset = 0; - lsnp = &null_lsn; - } else { - if (TAILQ_FIRST(&txnid->kids) != NULL && - (ret = __txn_activekids(dbenv, rectype, txnid)) != 0) - return (ret); - txn_num = txnid->txnid; - lsnp = &txnid->last_lsn; - } - - logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN) - + sizeof(u_int32_t) + (real_fid == NULL ? 0 : real_fid->size) - + sizeof(u_int32_t) + (tmp_fid == NULL ? 0 : tmp_fid->size) - + sizeof(u_int32_t) + (name == NULL ? 0 : name->size) - + sizeof(u_int32_t) - + sizeof(u_int32_t); - if (CRYPTO_ON(dbenv)) { - npad = - ((DB_CIPHER *)dbenv->crypto_handle)->adj_size(logrec.size); - logrec.size += npad; - } - - if ((ret = __os_malloc(dbenv, - logrec.size, &logrec.data)) != 0) - return (ret); - - if (npad > 0) - memset((u_int8_t *)logrec.data + logrec.size - npad, 0, npad); - - bp = logrec.data; - - memcpy(bp, &rectype, sizeof(rectype)); - bp += sizeof(rectype); - - memcpy(bp, &txn_num, sizeof(txn_num)); - bp += sizeof(txn_num); - - memcpy(bp, lsnp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - if (real_fid == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &real_fid->size, sizeof(real_fid->size)); - bp += sizeof(real_fid->size); - memcpy(bp, real_fid->data, real_fid->size); - bp += real_fid->size; - } - - if (tmp_fid == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &tmp_fid->size, sizeof(tmp_fid->size)); - bp += sizeof(tmp_fid->size); - memcpy(bp, tmp_fid->data, tmp_fid->size); - bp += tmp_fid->size; - } - - if (name == NULL) { - zero = 0; - memcpy(bp, &zero, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - } else { - memcpy(bp, &name->size, sizeof(name->size)); - bp += sizeof(name->size); - memcpy(bp, name->data, name->size); - bp += name->size; - } - - uinttmp = (u_int32_t)appname; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - uinttmp = (u_int32_t)child; - memcpy(bp, &uinttmp, sizeof(uinttmp)); - bp += sizeof(uinttmp); - - DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) <= logrec.size); - ret = dbenv->log_put(dbenv, - ret_lsnp, (DBT *)&logrec, flags | DB_NOCOPY); - if (txnid != NULL && ret == 0) - txnid->last_lsn = *ret_lsnp; -#ifdef LOG_DIAGNOSTIC - if (ret != 0) - (void)__fop_file_remove_print(dbenv, - (DBT *)&logrec, ret_lsnp, NULL, NULL); -#endif - __os_free(dbenv, logrec.data); - return (ret); -} - -/* - * PUBLIC: int __fop_file_remove_getpgnos __P((DB_ENV *, DBT *, - * PUBLIC: DB_LSN *, db_recops, void *)); - */ -int -__fop_file_remove_getpgnos(dbenv, rec, lsnp, notused1, summary) - DB_ENV *dbenv; - DBT *rec; - DB_LSN *lsnp; - db_recops notused1; - void *summary; -{ - TXN_RECS *t; - int ret; - COMPQUIET(rec, NULL); - COMPQUIET(notused1, DB_TXN_ABORT); - - t = (TXN_RECS *)summary; - - if ((ret = __rep_check_alloc(dbenv, t, 1)) != 0) - return (ret); - - t->array[t->npages].flags = LSN_PAGE_NOLOCK; - t->array[t->npages].lsn = *lsnp; - t->array[t->npages].fid = DB_LOGFILEID_INVALID; - memset(&t->array[t->npages].pgdesc, 0, - sizeof(t->array[t->npages].pgdesc)); - - t->npages++; - - return (0); -} - -/* - * PUBLIC: int __fop_file_remove_print __P((DB_ENV *, DBT *, - * PUBLIC: DB_LSN *, db_recops, void *)); - */ -int -__fop_file_remove_print(dbenv, dbtp, lsnp, notused2, notused3) - DB_ENV *dbenv; - DBT *dbtp; - DB_LSN *lsnp; - db_recops notused2; - void *notused3; -{ - __fop_file_remove_args *argp; - u_int32_t i; - int ch; - int ret; - - notused2 = DB_TXN_ABORT; - notused3 = NULL; - - if ((ret = __fop_file_remove_read(dbenv, dbtp->data, &argp)) != 0) - return (ret); - (void)printf( - "[%lu][%lu]__fop_file_remove: rec: %lu txnid %lx prevlsn [%lu][%lu]\n", - (u_long)lsnp->file, - (u_long)lsnp->offset, - (u_long)argp->type, - (u_long)argp->txnid->txnid, - (u_long)argp->prev_lsn.file, - (u_long)argp->prev_lsn.offset); - (void)printf("\treal_fid: "); - for (i = 0; i < argp->real_fid.size; i++) { - ch = ((u_int8_t *)argp->real_fid.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\ttmp_fid: "); - for (i = 0; i < argp->tmp_fid.size; i++) { - ch = ((u_int8_t *)argp->tmp_fid.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tname: "); - for (i = 0; i < argp->name.size; i++) { - ch = ((u_int8_t *)argp->name.data)[i]; - printf(isprint(ch) || ch == 0x0a ? "%c" : "%#x ", ch); - } - (void)printf("\n"); - (void)printf("\tappname: %lu\n", (u_long)argp->appname); - (void)printf("\tchild: 0x%lx\n", (u_long)argp->child); - (void)printf("\n"); - __os_free(dbenv, argp); - return (0); -} - -/* - * PUBLIC: int __fop_file_remove_read __P((DB_ENV *, void *, - * PUBLIC: __fop_file_remove_args **)); - */ -int -__fop_file_remove_read(dbenv, recbuf, argpp) - DB_ENV *dbenv; - void *recbuf; - __fop_file_remove_args **argpp; -{ - __fop_file_remove_args *argp; - u_int32_t uinttmp; - u_int8_t *bp; - int ret; - - if ((ret = __os_malloc(dbenv, - sizeof(__fop_file_remove_args) + sizeof(DB_TXN), &argp)) != 0) - return (ret); - - argp->txnid = (DB_TXN *)&argp[1]; - - bp = recbuf; - memcpy(&argp->type, bp, sizeof(argp->type)); - bp += sizeof(argp->type); - - memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid)); - bp += sizeof(argp->txnid->txnid); - - memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN)); - bp += sizeof(DB_LSN); - - memset(&argp->real_fid, 0, sizeof(argp->real_fid)); - memcpy(&argp->real_fid.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->real_fid.data = bp; - bp += argp->real_fid.size; - - memset(&argp->tmp_fid, 0, sizeof(argp->tmp_fid)); - memcpy(&argp->tmp_fid.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->tmp_fid.data = bp; - bp += argp->tmp_fid.size; - - memset(&argp->name, 0, sizeof(argp->name)); - memcpy(&argp->name.size, bp, sizeof(u_int32_t)); - bp += sizeof(u_int32_t); - argp->name.data = bp; - bp += argp->name.size; - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->appname = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - memcpy(&uinttmp, bp, sizeof(uinttmp)); - argp->child = (u_int32_t)uinttmp; - bp += sizeof(uinttmp); - - *argpp = argp; - return (0); -} - -/* - * PUBLIC: int __fop_init_print __P((DB_ENV *, int (***)(DB_ENV *, - * PUBLIC: DBT *, DB_LSN *, db_recops, void *), size_t *)); - */ -int -__fop_init_print(dbenv, dtabp, dtabsizep) - DB_ENV *dbenv; - int (***dtabp)__P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); - size_t *dtabsizep; -{ - int ret; - - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_create_print, DB___fop_create)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_remove_print, DB___fop_remove)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_write_print, DB___fop_write)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_rename_print, DB___fop_rename)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_file_remove_print, DB___fop_file_remove)) != 0) - return (ret); - return (0); -} - -/* - * PUBLIC: int __fop_init_getpgnos __P((DB_ENV *, int (***)(DB_ENV *, - * PUBLIC: DBT *, DB_LSN *, db_recops, void *), size_t *)); - */ -int -__fop_init_getpgnos(dbenv, dtabp, dtabsizep) - DB_ENV *dbenv; - int (***dtabp)__P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); - size_t *dtabsizep; -{ - int ret; - - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_create_getpgnos, DB___fop_create)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_remove_getpgnos, DB___fop_remove)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_write_getpgnos, DB___fop_write)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_rename_getpgnos, DB___fop_rename)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_file_remove_getpgnos, DB___fop_file_remove)) != 0) - return (ret); - return (0); -} - -/* - * PUBLIC: int __fop_init_recover __P((DB_ENV *, int (***)(DB_ENV *, - * PUBLIC: DBT *, DB_LSN *, db_recops, void *), size_t *)); - */ -int -__fop_init_recover(dbenv, dtabp, dtabsizep) - DB_ENV *dbenv; - int (***dtabp)__P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); - size_t *dtabsizep; -{ - int ret; - - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_create_recover, DB___fop_create)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_remove_recover, DB___fop_remove)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_write_recover, DB___fop_write)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_rename_recover, DB___fop_rename)) != 0) - return (ret); - if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep, - __fop_file_remove_recover, DB___fop_file_remove)) != 0) - return (ret); - return (0); -} |