]> git.ozlabs.org Git - ccan/commitdiff
tdb2: unify tdb1_store into tdb_store
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
Switch on the TDB_VERSION1 flag.

ccan/tdb2/private.h
ccan/tdb2/tdb.c
ccan/tdb2/tdb1.h
ccan/tdb2/tdb1_tdb.c
ccan/tdb2/test/run-tdb1-nested-transactions.c

index f050fad8518b908de67b0d846f922e4ea5473625..fb04656da639cb1d2799ff3d7207853b00c6aa29 100644 (file)
@@ -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);
                          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,
 
 /* tdb.c: */
 enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
index 57b0777845e78805ff56298fd10517b4c8f351cb..5e92af8c9666ac4c443af53638fb1c822229179c 100644 (file)
@@ -284,6 +284,10 @@ bool tdb_exists(struct tdb_context *tdb, TDB_DATA key)
        struct tdb_used_record rec;
        struct hash_info h;
 
        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;
        off = find_and_lock(tdb, key, F_RDLCK, &h, &rec, NULL);
        if (TDB_OFF_IS_ERR(off)) {
                tdb->last_error = off;
index 77d673ae089247b72b72f524da5526217ca3bf4e..da77e27c88b7421394e2950242f34f771d2b9a23 100644 (file)
@@ -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_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);
 int tdb1_lockall(struct tdb_context *tdb);
 
 int tdb1_unlockall(struct tdb_context *tdb);
index 16e945974eaf9e2bcbf6ed213c6e5096bfb18c49..2c989bb9a4fb16a3a1db501fd76c87d4f43a8461 100644 (file)
@@ -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;
 
        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;
 }
        ret = tdb1_exists_hash(tdb, key, hash);
        return ret;
 }
index 645b4bc1470a23a541b459e9c1ff6f375b394ab1..408987b58e827527931ca586849c9dc6ebe1432a 100644 (file)
@@ -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_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_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_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_transaction_commit(tdb) == 0);
-       ok1(!tdb1_exists(tdb, key));
+       ok1(!tdb_exists(tdb, key));
        tdb_close(tdb);
 
        return exit_status();
        tdb_close(tdb);
 
        return exit_status();