Commit 2bba2a85 authored by Rusty Russell's avatar Rusty Russell

tdb2: unify tdb1_store into tdb_store

Switch on the TDB_VERSION1 flag.
parent acb26c9c
...@@ -652,6 +652,7 @@ enum TDB_ERROR tdb1_fetch(struct tdb_context *tdb, TDB_DATA key, ...@@ -652,6 +652,7 @@ enum TDB_ERROR tdb1_fetch(struct tdb_context *tdb, TDB_DATA key,
TDB_DATA *data); TDB_DATA *data);
int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf); 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_delete(struct tdb_context *tdb, TDB_DATA key);
int tdb1_exists(struct tdb_context *tdb, TDB_DATA key);
/* tdb.c: */ /* tdb.c: */
enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
......
...@@ -284,6 +284,10 @@ bool tdb_exists(struct tdb_context *tdb, TDB_DATA key) ...@@ -284,6 +284,10 @@ bool tdb_exists(struct tdb_context *tdb, TDB_DATA key)
struct tdb_used_record rec; struct tdb_used_record rec;
struct hash_info h; 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); off = find_and_lock(tdb, key, F_RDLCK, &h, &rec, NULL);
if (TDB_OFF_IS_ERR(off)) { if (TDB_OFF_IS_ERR(off)) {
tdb->last_error = off; tdb->last_error = off;
......
...@@ -53,8 +53,6 @@ int tdb1_traverse(struct tdb_context *tdb, tdb1_traverse_func fn, void *private_ ...@@ -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_lockall(struct tdb_context *tdb);
int tdb1_unlockall(struct tdb_context *tdb); int tdb1_unlockall(struct tdb_context *tdb);
......
...@@ -275,6 +275,7 @@ int tdb1_exists(struct tdb_context *tdb, TDB_DATA key) ...@@ -275,6 +275,7 @@ int tdb1_exists(struct tdb_context *tdb, TDB_DATA key)
uint32_t hash = tdb_hash(tdb, key.dptr, key.dsize); uint32_t hash = tdb_hash(tdb, key.dptr, key.dsize);
int ret; int ret;
assert(tdb->flags & TDB_VERSION1);
ret = tdb1_exists_hash(tdb, key, hash); ret = tdb1_exists_hash(tdb, key, hash);
return ret; return ret;
} }
......
...@@ -54,18 +54,18 @@ int main(int argc, char *argv[]) ...@@ -54,18 +54,18 @@ int main(int argc, char *argv[])
ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb1_transaction_start(tdb) == 0);
ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb_delete(tdb, key) == TDB_SUCCESS);
ok1(tdb1_transaction_commit(tdb) == 0); ok1(tdb1_transaction_commit(tdb) == 0);
ok1(!tdb1_exists(tdb, key)); ok1(!tdb_exists(tdb, key));
ok1(tdb1_transaction_cancel(tdb) == 0); ok1(tdb1_transaction_cancel(tdb) == 0);
/* Surprise! Kills inner "committed" transaction. */ /* 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(tdb1_transaction_start(tdb) == 0); ok1(tdb1_transaction_start(tdb) == 0);
ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb_delete(tdb, key) == TDB_SUCCESS);
ok1(tdb1_transaction_commit(tdb) == 0); 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); tdb_close(tdb);
return exit_status(); return exit_status();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment