tdb: allow reads after prepare commit
authorAndrew Tridgell <tridge@samba.org>
Tue, 15 Sep 2009 21:04:22 +0000 (14:04 -0700)
committerStefan Metzmacher <metze@samba.org>
Wed, 16 Dec 2009 07:03:46 +0000 (08:03 +0100)
We previously only allowed a commit to happen after a prepare
commit. It is in fact safe to allow reads between a prepare and a
commit, and the s4 replication code can make use of that, so allow it.
(cherry picked from samba commit 46c99ec2a3781d53138245182345c6c2ddd9a258)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
lib/tdb/common/transaction.c

index ee6541fb1a6190c2160cefde60f5186ae2642696..89319cdfd4d1ff6bd22bef4deb8123dfbdbeaab0 100644 (file)
@@ -144,14 +144,6 @@ static int transaction_read(struct tdb_context *tdb, tdb_off_t off, void *buf,
 {
        uint32_t blk;
 
-       /* Only a commit is allowed on a prepared transaction */
-       if (tdb->transaction->prepared) {
-               tdb->ecode = TDB_ERR_EINVAL;
-               TDB_LOG((tdb, TDB_DEBUG_FATAL, "transaction_read: transaction already prepared, read not allowed\n"));
-               tdb->transaction->transaction_error = 1;
-               return -1;
-       }
-
        /* break it down into block sized ops */
        while (len + (off % tdb->transaction->block_size) > tdb->transaction->block_size) {
                tdb_len_t len2 = tdb->transaction->block_size - (off % tdb->transaction->block_size);