X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Fprivate.h;h=3366aea2d16c09c91d11ec4b115dab1b3eaca0a3;hb=b24f8e2ae5ac22fc2e5dbfebebf9c5fa2f338588;hp=de832af667402eb3efb609954fcaaf77fd61c98b;hpb=1dcd3ad51bbeb4ba8048b08d62278df8e428031a;p=ccan diff --git a/ccan/tdb2/private.h b/ccan/tdb2/private.h index de832af6..3366aea2 100644 --- a/ccan/tdb2/private.h +++ b/ccan/tdb2/private.h @@ -1,6 +1,6 @@ #ifndef TDB_PRIVATE_H #define TDB_PRIVATE_H - /* + /* Trivial Database 2: private types and prototypes Copyright (C) Rusty Russell 2010 @@ -325,17 +325,20 @@ struct tdb_context { int mmap_flags; /* Error code for last tdb error. */ - enum TDB_ERROR ecode; + enum TDB_ERROR ecode; /* the flags passed to tdb_open, for tdb_reopen. */ uint32_t flags; /* Logging function */ - tdb_logfn_t logfn; + void (*logfn)(struct tdb_context *tdb, + enum tdb_log_level level, + void *log_private, + const char *message); void *log_private; /* Hash function. */ - tdb_hashfn_t khash; + uint64_t (*khash)(const void *key, size_t len, uint64_t seed, void *); void *hash_priv; uint64_t hash_seed; @@ -361,13 +364,13 @@ struct tdb_context { /* Single list of all TDBs, to avoid multiple opens. */ struct tdb_context *next; - dev_t device; + dev_t device; ino_t inode; }; struct tdb_methods { - int (*read)(struct tdb_context *, tdb_off_t, void *, tdb_len_t); - int (*write)(struct tdb_context *, tdb_off_t, const void *, tdb_len_t); + int (*tread)(struct tdb_context *, tdb_off_t, void *, tdb_len_t); + int (*twrite)(struct tdb_context *, tdb_off_t, const void *, tdb_len_t); int (*oob)(struct tdb_context *, tdb_off_t, bool); int (*expand_file)(struct tdb_context *, tdb_len_t); void *(*direct)(struct tdb_context *, tdb_off_t, size_t, bool); @@ -379,6 +382,14 @@ struct tdb_methods { /* hash.c: */ void tdb_hash_init(struct tdb_context *tdb); +int first_in_hash(struct tdb_context *tdb, + struct traverse_info *tinfo, + TDB_DATA *kbuf, size_t *dlen); + +int next_in_hash(struct tdb_context *tdb, + struct traverse_info *tinfo, + TDB_DATA *kbuf, size_t *dlen); + /* Hash random memory. */ uint64_t tdb_hash(struct tdb_context *tdb, const void *ptr, size_t len); @@ -474,11 +485,6 @@ tdb_off_t tdb_find_nonzero_off(struct tdb_context *tdb, tdb_off_t tdb_find_zero_off(struct tdb_context *tdb, tdb_off_t off, uint64_t num); -/* Even on files, we can get partial writes due to signals. */ -bool tdb_pwrite_all(int fd, const void *buf, size_t len, tdb_off_t off); -bool tdb_pread_all(int fd, void *buf, size_t len, tdb_off_t off); -bool tdb_read_all(int fd, void *buf, size_t len); - /* Allocate and make a copy of some offset. */ void *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len); @@ -540,14 +546,6 @@ bool tdb_has_expansion_lock(struct tdb_context *tdb); /* If it needs recovery, grab all the locks and do it. */ int tdb_lock_and_recover(struct tdb_context *tdb); -/* traverse.c: */ -int first_in_hash(struct tdb_context *tdb, int ltype, - struct traverse_info *tinfo, - TDB_DATA *kbuf, size_t *dlen); -int next_in_hash(struct tdb_context *tdb, int ltype, - struct traverse_info *tinfo, - TDB_DATA *kbuf, size_t *dlen); - /* transaction.c: */ int tdb_transaction_recover(struct tdb_context *tdb); bool tdb_needs_recovery(struct tdb_context *tdb); @@ -555,7 +553,7 @@ bool tdb_needs_recovery(struct tdb_context *tdb); /* tdb.c: */ void COLD tdb_logerr(struct tdb_context *tdb, enum TDB_ERROR ecode, - enum tdb_debug_level level, + enum tdb_log_level level, const char *fmt, ...); #ifdef TDB_TRACE