From acb26c9c3ee054c8b2141db25c9bd7be064e425c Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 31 Aug 2011 15:31:06 +0930 Subject: [PATCH] tdb2: unify tdb1_delete into tdb_delete. Switch on the TDB_VERSION1 flag. --- ccan/tdb2/private.h | 1 + ccan/tdb2/tdb.c | 6 ++++++ ccan/tdb2/tdb1.h | 2 -- ccan/tdb2/tdb1_tdb.c | 1 + ccan/tdb2/test/run-tdb1-3G-file.c | 2 +- ccan/tdb2/test/run-tdb1-incompatible.c | 4 ++-- ccan/tdb2/test/run-tdb1-nested-transactions.c | 4 ++-- ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c | 6 +++--- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ccan/tdb2/private.h b/ccan/tdb2/private.h index 1c307fc3..f050fad8 100644 --- a/ccan/tdb2/private.h +++ b/ccan/tdb2/private.h @@ -651,6 +651,7 @@ int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag); 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.c: */ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index 9f3da1c0..57b07778 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -302,6 +302,12 @@ enum TDB_ERROR tdb_delete(struct tdb_context *tdb, struct tdb_data key) struct hash_info h; enum TDB_ERROR ecode; + if (tdb->flags & TDB_VERSION1) { + if (tdb1_delete(tdb, key) == -1) + return tdb->last_error; + return TDB_SUCCESS; + } + off = find_and_lock(tdb, key, F_WRLCK, &h, &rec, NULL); if (TDB_OFF_IS_ERR(off)) { return tdb->last_error = off; diff --git a/ccan/tdb2/tdb1.h b/ccan/tdb2/tdb1.h index 62b94da4..77d673ae 100644 --- a/ccan/tdb2/tdb1.h +++ b/ccan/tdb2/tdb1.h @@ -45,8 +45,6 @@ int tdb1_parse_record(struct tdb_context *tdb, TDB_DATA key, void *private_data), void *private_data); -int tdb1_delete(struct tdb_context *tdb, TDB_DATA key); - TDB_DATA tdb1_firstkey(struct tdb_context *tdb); TDB_DATA tdb1_nextkey(struct tdb_context *tdb, TDB_DATA key); diff --git a/ccan/tdb2/tdb1_tdb.c b/ccan/tdb2/tdb1_tdb.c index 895a8c2a..16e94597 100644 --- a/ccan/tdb2/tdb1_tdb.c +++ b/ccan/tdb2/tdb1_tdb.c @@ -434,6 +434,7 @@ int tdb1_delete(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_delete_hash(tdb, key, hash); return ret; } diff --git a/ccan/tdb2/test/run-tdb1-3G-file.c b/ccan/tdb2/test/run-tdb1-3G-file.c index 5e0e64e8..116c6554 100644 --- a/ccan/tdb2/test/run-tdb1-3G-file.c +++ b/ccan/tdb2/test/run-tdb1-3G-file.c @@ -104,7 +104,7 @@ int main(int argc, char *argv[]) ok1(tdb1_traverse(tdb, test_traverse, &orig_data) == 1); /* Delete should work. */ - ok1(tdb1_delete(tdb, key) == 0); + ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb1_traverse(tdb, test_traverse, NULL) == 0); diff --git a/ccan/tdb2/test/run-tdb1-incompatible.c b/ccan/tdb2/test/run-tdb1-incompatible.c index d2e07107..e6b2994e 100644 --- a/ccan/tdb2/test/run-tdb1-incompatible.c +++ b/ccan/tdb2/test/run-tdb1-incompatible.c @@ -153,7 +153,7 @@ int main(int argc, char *argv[]) O_RDWR, 0600, &jhash_attr); ok1(tdb); ok1(log_count == 0); - ok1(tdb1_fetch(tdb, d, &d) == TDB_SUCCESS); + ok1(tdb_fetch(tdb, d, &d) == TDB_SUCCESS); ok1(d.dsize == 5); free(d.dptr); ok1(tdb1_check(tdb, NULL, NULL) == 0); @@ -202,7 +202,7 @@ int main(int argc, char *argv[]) &dumbhash_attr); ok1(tdb); ok1(log_count == 0); - ok1(tdb1_fetch(tdb, d, &d) == TDB_SUCCESS); + ok1(tdb_fetch(tdb, d, &d) == TDB_SUCCESS); ok1(d.dsize == 5); free(d.dptr); ok1(tdb1_check(tdb, NULL, NULL) == 0); diff --git a/ccan/tdb2/test/run-tdb1-nested-transactions.c b/ccan/tdb2/test/run-tdb1-nested-transactions.c index 89e47d3f..645b4bc1 100644 --- a/ccan/tdb2/test/run-tdb1-nested-transactions.c +++ b/ccan/tdb2/test/run-tdb1-nested-transactions.c @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb1_transaction_start(tdb) == 0); - ok1(tdb1_delete(tdb, key) == 0); + ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb1_transaction_commit(tdb) == 0); ok1(!tdb1_exists(tdb, key)); ok1(tdb1_transaction_cancel(tdb) == 0); @@ -61,7 +61,7 @@ int main(int argc, char *argv[]) ok1(tdb1_transaction_start(tdb) == 0); ok1(tdb1_transaction_start(tdb) == 0); - ok1(tdb1_delete(tdb, key) == 0); + ok1(tdb_delete(tdb, key) == TDB_SUCCESS); ok1(tdb1_transaction_commit(tdb) == 0); ok1(!tdb1_exists(tdb, key)); ok1(tdb1_transaction_commit(tdb) == 0); diff --git a/ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c b/ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c index 94c125dc..383b74cb 100644 --- a/ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c +++ b/ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c @@ -40,7 +40,7 @@ static void delete_entries(struct tdb_context *tdb) key.dsize = sizeof(i); key.dptr = (void *)&i; - ok1(tdb1_delete(tdb, key) == 0); + ok1(tdb_delete(tdb, key) == TDB_SUCCESS); } } @@ -52,7 +52,7 @@ static int delete_other(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, memcpy(&i, key.dptr, 4); i = (i + 1) % NUM_ENTRIES; key.dptr = (void *)&i; - if (tdb1_delete(tdb, key) != 0) + if (tdb_delete(tdb, key) != TDB_SUCCESS) (*(int *)private_data)++; return 0; } @@ -60,7 +60,7 @@ static int delete_other(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, static int delete_self(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *private_data) { - ok1(tdb1_delete(tdb, key) == 0); + ok1(tdb_delete(tdb, key) == TDB_SUCCESS); return 0; } -- 2.39.2