diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 08:02:13 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 08:02:13 +0930 |
commit | a347a4802695c41437e2966404d1e2fe2dee78b4 (patch) | |
tree | 1dfc2d321511aff0d3ecbd09a955024fd51dafb1 | |
parent | 662f46de21437527a57f0cfc77e290a3ec9f3d94 (diff) | |
download | samba-a347a4802695c41437e2966404d1e2fe2dee78b4.tar.gz samba-a347a4802695c41437e2966404d1e2fe2dee78b4.tar.bz2 samba-a347a4802695c41437e2966404d1e2fe2dee78b4.zip |
tdb2: unify tdb1_wipe into tdb_wipe.
Switch on the TDB_VERSION1 flag.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit b2555a868e3ee58d1b31f9558e3623d49ed2b2f1)
-rw-r--r-- | lib/tdb2/private.h | 1 | ||||
-rw-r--r-- | lib/tdb2/tdb1.h | 2 | ||||
-rw-r--r-- | lib/tdb2/traverse.c | 6 |
3 files changed, 7 insertions, 2 deletions
diff --git a/lib/tdb2/private.h b/lib/tdb2/private.h index 71ef07538e..f4fba85d3e 100644 --- a/lib/tdb2/private.h +++ b/lib/tdb2/private.h @@ -693,6 +693,7 @@ enum TDB_ERROR tdb1_parse_record(struct tdb_context *tdb, TDB_DATA key, void *private_data); void tdb1_increment_seqnum_nonblock(struct tdb_context *tdb); int tdb1_get_seqnum(struct tdb_context *tdb); +int tdb1_wipe_all(struct tdb_context *tdb); /* tdb1_transaction.c: */ int tdb1_transaction_start(struct tdb_context *tdb); diff --git a/lib/tdb2/tdb1.h b/lib/tdb2/tdb1.h index 90cd7fa14a..3d9fcd70a4 100644 --- a/lib/tdb2/tdb1.h +++ b/lib/tdb2/tdb1.h @@ -42,8 +42,6 @@ uint64_t tdb1_incompatible_hash(const void *key, size_t len, uint64_t seed, void /* @} ******************************************************************/ -/* wipe and repack */ -int tdb1_wipe_all(struct tdb_context *tdb); int tdb1_repack(struct tdb_context *tdb); extern TDB_DATA tdb1_null; diff --git a/lib/tdb2/traverse.c b/lib/tdb2/traverse.c index b27550032f..b1897ce1b8 100644 --- a/lib/tdb2/traverse.c +++ b/lib/tdb2/traverse.c @@ -115,6 +115,12 @@ enum TDB_ERROR tdb_wipe_all(struct tdb_context *tdb) enum TDB_ERROR ecode; int64_t count; + if (tdb->flags & TDB_VERSION1) { + if (tdb1_wipe_all(tdb) == -1) + return tdb->last_error; + return TDB_SUCCESS; + } + ecode = tdb_allrecord_lock(tdb, F_WRLCK, TDB_LOCK_WAIT, false); if (ecode != TDB_SUCCESS) return tdb->last_error = ecode; |