From: Rusty Russell Date: Wed, 31 Aug 2011 06:01:06 +0000 (+0930) Subject: tdb2: unify tdb1_store into tdb_store X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=2bba2a856a6cfdb93085b701557850bc1da99587;hp=acb26c9c3ee054c8b2141db25c9bd7be064e425c;ds=sidebyside tdb2: unify tdb1_store into tdb_store Switch on the TDB_VERSION1 flag. --- diff --git a/ccan/tdb2/private.h b/ccan/tdb2/private.h index f050fad8..fb04656d 100644 --- a/ccan/tdb2/private.h +++ b/ccan/tdb2/private.h @@ -652,6 +652,7 @@ enum TDB_ERROR tdb1_fetch(struct tdb_context *tdb, TDB_DATA key, TDB_DATA *data); int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf); int tdb1_delete(struct tdb_context *tdb, TDB_DATA key); +int tdb1_exists(struct tdb_context *tdb, TDB_DATA key); /* tdb.c: */ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index 57b07778..5e92af8c 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -284,6 +284,10 @@ bool tdb_exists(struct tdb_context *tdb, TDB_DATA key) struct tdb_used_record rec; struct hash_info h; + if (tdb->flags & TDB_VERSION1) { + return tdb1_exists(tdb, key); + } + off = find_and_lock(tdb, key, F_RDLCK, &h, &rec, NULL); if (TDB_OFF_IS_ERR(off)) { tdb->last_error = off; diff --git a/ccan/tdb2/tdb1.h b/ccan/tdb2/tdb1.h index 77d673ae..da77e27c 100644 --- a/ccan/tdb2/tdb1.h +++ b/ccan/tdb2/tdb1.h @@ -53,8 +53,6 @@ int tdb1_traverse(struct tdb_context *tdb, tdb1_traverse_func fn, void *private_ int tdb1_traverse_read(struct tdb_context *tdb, tdb1_traverse_func fn, void *private_data); -int tdb1_exists(struct tdb_context *tdb, TDB_DATA key); - int tdb1_lockall(struct tdb_context *tdb); int tdb1_unlockall(struct tdb_context *tdb); diff --git a/ccan/tdb2/tdb1_tdb.c b/ccan/tdb2/tdb1_tdb.c index 16e94597..2c989bb9 100644 --- a/ccan/tdb2/tdb1_tdb.c +++ b/ccan/tdb2/tdb1_tdb.c @@ -275,6 +275,7 @@ int tdb1_exists(struct tdb_context *tdb, TDB_DATA key) uint32_t hash = tdb_hash(tdb, key.dptr, key.dsize); int ret; + assert(tdb->flags & TDB_VERSION1); ret = tdb1_exists_hash(tdb, key, hash); return ret; } diff --git a/ccan/tdb2/test/run-tdb1-nested-transactions.c b/ccan/tdb2/test/run-tdb1-nested-transactions.c index 645b4bc1..408987b5 100644 --- a/ccan/tdb2/test/run-tdb1-nested-transactions.c +++ b/ccan/tdb2/test/run-tdb1-nested-transactions.c @@ -54,18 +54,18 @@ int main(int argc, char *argv[]) ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb1_transaction_commit(tdb) == 0); - ok1(!tdb1_exists(tdb, key)); + ok1(!tdb_exists(tdb, key)); ok1(tdb1_transaction_cancel(tdb) == 0); /* Surprise! Kills inner "committed" transaction. */ - ok1(tdb1_exists(tdb, key)); + ok1(tdb_exists(tdb, key)); ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb1_transaction_commit(tdb) == 0); - ok1(!tdb1_exists(tdb, key)); + ok1(!tdb_exists(tdb, key)); ok1(tdb1_transaction_commit(tdb) == 0); - ok1(!tdb1_exists(tdb, key)); + ok1(!tdb_exists(tdb, key)); tdb_close(tdb); return exit_status();