X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Fopen.c;h=7bb50f1db5964ae13687f0c792fab5a8603e8481;hp=473dc98b7e4c68d78da0be268c5434ab70042b3a;hb=5e7b20d01b4790e15323679f9bb94520d46b4aaa;hpb=6fdff621a98f161701f79b3da64e461feaa21952 diff --git a/ccan/tdb2/open.c b/ccan/tdb2/open.c index 473dc98b..7bb50f1d 100644 --- a/ccan/tdb2/open.c +++ b/ccan/tdb2/open.c @@ -107,6 +107,7 @@ static enum TDB_ERROR tdb_new_database(struct tdb_context *tdb, tdb->hash_priv); newdb.hdr.recovery = 0; newdb.hdr.features_used = newdb.hdr.features_offered = TDB_FEATURE_MASK; + newdb.hdr.seqnum = 0; memset(newdb.hdr.reserved, 0, sizeof(newdb.hdr.reserved)); /* Initial hashes are empty. */ memset(newdb.hdr.hashtable, 0, sizeof(newdb.hdr.hashtable)); @@ -208,6 +209,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, tdb->transaction = NULL; tdb->stats = NULL; tdb->access = NULL; + tdb->last_error = TDB_SUCCESS; tdb->file = NULL; tdb_hash_init(tdb); tdb_io_init(tdb); @@ -243,7 +245,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, } if (tdb_flags & ~(TDB_INTERNAL | TDB_NOLOCK | TDB_NOMMAP | TDB_CONVERT - | TDB_NOSYNC)) { + | TDB_NOSYNC | TDB_SEQNUM)) { ecode = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_open: unknown flags %u", tdb_flags); goto fail; @@ -452,9 +454,9 @@ fail_errno: #ifdef TDB_TRACE close(tdb->tracefd); #endif - free((char *)tdb->name); + free(cast_const(char *, tdb->name)); if (tdb->file) { - tdb_unlock_all(tdb); + tdb_lock_cleanup(tdb); if (--tdb->file->refcnt == 0) { assert(tdb->file->num_lockrecs == 0); if (tdb->file->map_ptr) { @@ -493,11 +495,11 @@ int tdb_close(struct tdb_context *tdb) else tdb_munmap(tdb->file); } - free((char *)tdb->name); + free(cast_const(char *, tdb->name)); if (tdb->file) { struct tdb_file **i; - tdb_unlock_all(tdb); + tdb_lock_cleanup(tdb); if (--tdb->file->refcnt == 0) { ret = close(tdb->file->fd);