tdb: allow reads after prepare commit
authorAndrew Tridgell <tridge@samba.org>
Tue, 15 Sep 2009 21:04:22 +0000 (14:04 -0700)
committerAndrew Tridgell <tridge@samba.org>
Tue, 15 Sep 2009 21:52:01 +0000 (14:52 -0700)
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.

lib/tdb/common/transaction.c

index e97fe67b4e02781641af95e2d63ad8293804d32e..67a035879ce49acf053f4b220fa4536b97dcf144 100644 (file)
@@ -137,14 +137,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);