]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/transaction.c
tdb2: make tests work in parallel.
[ccan] / ccan / tdb2 / transaction.c
index a5f3c543e8194592f70e368d1f624b8833799a83..1f5709bf437468ccb082085de0747952ee931149 100644 (file)
@@ -203,7 +203,7 @@ static enum TDB_ERROR transaction_write(struct tdb_context *tdb, tdb_off_t off,
                tdb_len_t len2 = PAGESIZE - (off % PAGESIZE);
                ecode = transaction_write(tdb, off, buf, len2);
                if (ecode != TDB_SUCCESS) {
-                       return -1;
+                       return ecode;
                }
                len -= len2;
                off += len2;
@@ -521,6 +521,12 @@ enum TDB_ERROR tdb_transaction_start(struct tdb_context *tdb)
 {
        enum TDB_ERROR ecode;
 
+       if (tdb->flags & TDB_VERSION1) {
+               if (tdb1_transaction_start(tdb) == -1)
+                       return tdb->last_error;
+               return TDB_SUCCESS;
+       }
+
        tdb->stats.transactions++;
        /* some sanity checks */
        if (tdb->flags & TDB_INTERNAL) {
@@ -617,6 +623,10 @@ fail_allrecord_lock:
 */
 void tdb_transaction_cancel(struct tdb_context *tdb)
 {
+       if (tdb->flags & TDB_VERSION1) {
+               tdb1_transaction_cancel(tdb);
+               return;
+       }
        tdb->stats.transaction_cancel++;
        _tdb_transaction_cancel(tdb);
 }
@@ -1052,7 +1062,12 @@ static enum TDB_ERROR _tdb_transaction_prepare_commit(struct tdb_context *tdb)
 */
 enum TDB_ERROR tdb_transaction_prepare_commit(struct tdb_context *tdb)
 {
-       return _tdb_transaction_prepare_commit(tdb);
+       if (tdb->flags & TDB_VERSION1) {
+               if (tdb1_transaction_prepare_commit(tdb) == -1)
+                       return tdb->last_error;
+               return TDB_SUCCESS;
+       }
+       return tdb->last_error = _tdb_transaction_prepare_commit(tdb);
 }
 
 /*
@@ -1064,6 +1079,12 @@ enum TDB_ERROR tdb_transaction_commit(struct tdb_context *tdb)
        int i;
        enum TDB_ERROR ecode;
 
+       if (tdb->flags & TDB_VERSION1) {
+               if (tdb1_transaction_commit(tdb) == -1)
+                       return tdb->last_error;
+               return TDB_SUCCESS;
+       }
+
        if (tdb->tdb2.transaction == NULL) {
                return tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL,
                                                    TDB_LOG_USE_ERROR,