From: Michael Adam Date: Tue, 5 Aug 2008 16:47:40 +0000 (+0200) Subject: dbwrap ctdb: add db_ctdb_delete_persistent() and use it for persistent DBs X-Git-Tag: samba-3.3.0pre1~164 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f4aab595a0219305fbedf8890e787b690660a55a;p=thirdparty%2Fsamba.git dbwrap ctdb: add db_ctdb_delete_persistent() and use it for persistent DBs as delete_rec operation from fetch_locked() Michael --- diff --git a/source/lib/dbwrap_ctdb.c b/source/lib/dbwrap_ctdb.c index 0c5e6244119..1cccecbad93 100644 --- a/source/lib/dbwrap_ctdb.c +++ b/source/lib/dbwrap_ctdb.c @@ -199,6 +199,21 @@ static NTSTATUS db_ctdb_delete(struct db_record *rec) } +static NTSTATUS db_ctdb_delete_persistent(struct db_record *rec) +{ + TDB_DATA data; + + /* + * We have to store the header with empty data. TODO: Fix the + * tdb-level cleanup + */ + + ZERO_STRUCT(data); + + return db_ctdb_store_persistent(rec, data, 0); + +} + static int db_ctdb_record_destr(struct db_record* data) { struct db_ctdb_rec *crec = talloc_get_type_abort( @@ -274,10 +289,11 @@ again: if (persistent) { result->store = db_ctdb_store_persistent; + result->delete_rec = db_ctdb_delete_persistent; } else { result->store = db_ctdb_store; + result->delete_rec = db_ctdb_delete; } - result->delete_rec = db_ctdb_delete; talloc_set_destructor(result, db_ctdb_record_destr); ctdb_data = tdb_fetch(ctx->wtdb->tdb, key);