dbwrap: Run with mutexes for non-persistent tdbs
authorVolker Lendecke <vl@samba.org>
Fri, 11 Jan 2013 14:38:23 +0000 (15:38 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 27 Jun 2016 19:44:38 +0000 (21:44 +0200)
lib/dbwrap/dbwrap_tdb.c

index e12ec4405d604a5fe1698f424f4493a403aebd8b..303261b9e351ecd87445c49b76242daf2fd8b682 100644 (file)
@@ -424,6 +424,12 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
        }
        result->lock_order = lock_order;
 
+       result->persistent = ((tdb_flags & TDB_CLEAR_IF_FIRST) == 0);
+
+       if (!result->persistent && (tdb_flags & TDB_INCOMPATIBLE_HASH)) {
+               tdb_flags |= TDB_NO_TRANSACTIONS;
+       }
+
        db_tdb->wtdb = tdb_wrap_open(db_tdb, name, hash_size, tdb_flags,
                                     open_flags, mode);
        if (db_tdb->wtdb == NULL) {
@@ -446,7 +452,6 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
        result->traverse_read = db_tdb_traverse_read;
        result->parse_record = db_tdb_parse;
        result->get_seqnum = db_tdb_get_seqnum;
-       result->persistent = ((tdb_flags & TDB_CLEAR_IF_FIRST) == 0);
        result->transaction_start = db_tdb_transaction_start;
        result->transaction_start_nonblock = db_tdb_transaction_start_nonblock;
        result->transaction_commit = db_tdb_transaction_commit;