Berkeley DB: log_put
Полезная информация


#include <db.h>

int log_put(DB_LOG *logp, DB_LSN *lsn, const DBT *data, u_int32_t flags);


The log_put function appends records to the log. The DB_LSN of the put record is returned in the lsn argument. The flags argument may be set to one of the following values:

The log should write a checkpoint record, recording any information necessary to make the log structures recoverable after a crash.

The DB_LSN of the next record to be put is returned in the lsn argument.].

The log is forced to disk after this record is written, guaranteeing that all records with DB_LSN values less than or equal to the one being put are on disk before this function returns (this function is most often used for a transaction commit, see txn_commit for more information).

The caller is responsible for providing any necessary structure to data. (For example, in a write-ahead logging protocol, the application must understand what part of data is an operation code, what part is redo information, and what part is undo information. In addition, most transaction managers will store in data the DB_LSN of the previous log record for the same transaction, to support chaining back through the transaction's log records during undo.)

The log_put function returns the value of errno on failure, and 0 on success.


If a fatal error occurs in Berkeley DB, the log_put function may fail and return DB_RUNRECOVERY, at which point all subsequent database calls will also return DB_RUNRECOVERY.

The log_put function may fail and return errno for any of the errors specified for the following Berkeley DB and C library functions: abort(3), close(3), dbenv->db_paniccall(3), fcntl(3), fflush(3), fprintf(3), free(3), fsync(3), getenv(3), getpid(3), getuid(3), isdigit(3), lseek(3), malloc(3), memcpy(3), memset(3), open(3), sigfillset(3), sigprocmask(3), snprintf(3), stat(3), strerror(3), strlen(3), time(3), unlink(3), vfprintf(3), vsnprintf(3), and write(3).

In addition, the log_flush function may fail and return errno for the following conditions:

An invalid flag value or parameter was specified.

The record to be logged is larger than the maximum log record.

See Also

log_archive, log_close, log_compare, log_file, log_flush, log_get, log_open, log_put, log_register, log_stat, log_unlink and log_unregister.