tdb2: unify tdb1_store into tdb_store
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
Switch on the TDB_VERSION1 flag.

20 files changed:
ccan/tdb2/private.h
ccan/tdb2/tdb.c
ccan/tdb2/tdb1.h
ccan/tdb2/tdb1_tdb.c
ccan/tdb2/test/run-tdb1-3G-file.c
ccan/tdb2/test/run-tdb1-check.c
ccan/tdb2/test/run-tdb1-corrupt.c
ccan/tdb2/test/run-tdb1-die-during-transaction.c
ccan/tdb2/test/run-tdb1-endian.c
ccan/tdb2/test/run-tdb1-incompatible.c
ccan/tdb2/test/run-tdb1-nested-transactions.c
ccan/tdb2/test/run-tdb1-nested-traverse.c
ccan/tdb2/test/run-tdb1-no-lock-during-traverse.c
ccan/tdb2/test/run-tdb1-open-during-transaction.c
ccan/tdb2/test/run-tdb1-readonly-check.c
ccan/tdb2/test/run-tdb1-summary.c
ccan/tdb2/test/run-tdb1-traverse-in-transaction.c
ccan/tdb2/test/run-tdb1-wronghash-fail.c
ccan/tdb2/test/run-tdb1.c
ccan/tdb2/test/tdb1-external-agent.c

index 97ae5e18575654a28814a355891c059472689164..5b960d5a3efc8dfa1d80726501a47f2db2b343c0 100644 (file)
@@ -646,6 +646,9 @@ int tdb1_allrecord_unlock(struct tdb_context *tdb, int ltype);
 int tdb1_transaction_recover(struct tdb_context *tdb);
 int tdb1_transaction_cancel(struct tdb_context *tdb);
 
+/* tdb1_tdb.c: */
+int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
+
 /* tdb.c: */
 enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
                               enum TDB_ERROR ecode,
index 329a643f5145ac6c452fd2c08e56359a52e405dc..a7aa4572382b0f8b10ef03c4adc08599fd7e7293 100644 (file)
@@ -114,6 +114,12 @@ enum TDB_ERROR tdb_store(struct tdb_context *tdb,
        struct tdb_used_record rec;
        enum TDB_ERROR ecode;
 
+       if (tdb->flags & TDB_VERSION1) {
+               if (tdb1_store(tdb, key, dbuf, flag) == -1)
+                       return tdb->last_error;
+               return TDB_SUCCESS;
+       }
+
        off = find_and_lock(tdb, key, F_WRLCK, &h, &rec, NULL);
        if (TDB_OFF_IS_ERR(off)) {
                return tdb->last_error = off;
index c1a68ffc17d9e965f69efa7b74f791211bd7e29e..e448d75d640e4669557114d1ed85b96b7c6cb888 100644 (file)
@@ -49,8 +49,6 @@ int tdb1_parse_record(struct tdb_context *tdb, TDB_DATA key,
 
 int tdb1_delete(struct tdb_context *tdb, TDB_DATA key);
 
-int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
-
 int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf);
 
 TDB_DATA tdb1_firstkey(struct tdb_context *tdb);
index cdcf76d3689f4a02f4ea11178d91556bb27d68fe..384654ed941a87910a3b1c00be07a570f4cae018 100644 (file)
@@ -26,6 +26,7 @@
 */
 
 #include "tdb1_private.h"
+#include <assert.h>
 
 TDB_DATA tdb1_null;
 
@@ -601,6 +602,8 @@ int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
        uint32_t hash;
        int ret;
 
+       assert(tdb->flags & TDB_VERSION1);
+
        if ((tdb->flags & TDB_RDONLY) || tdb->tdb1.traverse_read) {
                tdb->last_error = TDB_ERR_RDONLY;
                return -1;
index 9194d3a319d589552421e5f8054c829661218c91..0f299a32fe1427d2ed7b598f1dff4b068d594865 100644 (file)
@@ -86,7 +86,7 @@ int main(int argc, char *argv[])
        orig_data.dsize = strlen("world");
        orig_data.dptr = (void *)"world";
 
-       ok1(tdb1_store(tdb, key, orig_data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, orig_data, TDB_INSERT) == TDB_SUCCESS);
 
        data = tdb1_fetch(tdb, key);
        ok1(data.dsize == strlen("world"));
@@ -110,7 +110,7 @@ int main(int argc, char *argv[])
 
        /* Transactions should work. */
        ok1(tdb1_transaction_start(tdb) == 0);
-       ok1(tdb1_store(tdb, key, orig_data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, orig_data, TDB_INSERT) == TDB_SUCCESS);
 
        data = tdb1_fetch(tdb, key);
        ok1(data.dsize == strlen("world"));
index 8a0532c4be51870baf07cb549d165d57fd76e970..d2360f02fdc276c61531f9dae2aa264ce6b2bb0e 100644 (file)
@@ -26,7 +26,7 @@ int main(int argc, char *argv[])
        data.dsize = strlen("world");
        data.dptr = (void *)"world";
 
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
        ok1(tdb1_check(tdb, NULL, NULL) == 0);
        tdb_close(tdb);
 
index f87afd8a6ab7ff210d6963fc4003d98a55145dfd..373f079512f5689a9b7c420d079b83587ce6268f 100644 (file)
@@ -58,7 +58,7 @@ static void check_test(struct tdb_context *tdb)
        for (key.dsize = 1; key.dsize <= 5; key.dsize++) {
                ksize += key.dsize;
                dsize += data.dsize;
-               if (tdb1_store(tdb, key, data, TDB_INSERT) != 0)
+               if (tdb_store(tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
                        abort();
        }
 
index 4f54f6cbc66209923d287739e3cbfe0891163dd7..f42513953a5adbb79995c9a132340e4676604d4c 100644 (file)
@@ -155,7 +155,7 @@ reset:
        /* Put key for agent to fetch. */
        key.dsize = strlen(KEY_STRING);
        key.dptr = (void *)KEY_STRING;
-       if (tdb1_store(tdb, key, key, TDB_INSERT) != 0)
+       if (tdb_store(tdb, key, key, TDB_INSERT) != TDB_SUCCESS)
                return false;
 
        /* This is the key we insert in transaction. */
@@ -173,7 +173,7 @@ reset:
        if (tdb1_transaction_start(tdb) != 0)
                return false;
 
-       if (tdb1_store(tdb, key, key, TDB_INSERT) != 0)
+       if (tdb_store(tdb, key, key, TDB_INSERT) != TDB_SUCCESS)
                return false;
 
        if (tdb1_transaction_commit(tdb) != 0)
index 5e529ce2d0e95bae64aefeee27a31d4be7484d20..bb5acf627b2c12f4fb2ab317a548a17c34e9cee3 100644 (file)
@@ -14,7 +14,7 @@ int main(int argc, char *argv[])
        hsize.base.next = &tap_log_attr;
        hsize.tdb1_hashsize.hsize = 1024;
 
-       plan_tests(13);
+       plan_tests(11);
        tdb = tdb_open("run-endian.tdb1",
                       TDB_VERSION1|TDB_CONVERT,
                       O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
@@ -25,12 +25,10 @@ int main(int argc, char *argv[])
        data.dsize = strlen("world");
        data.dptr = (void *)"world";
 
-       ok1(tdb1_store(tdb, key, data, TDB_MODIFY) < 0);
-       ok1(tdb_error(tdb) == TDB_ERR_NOEXIST);
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) < 0);
-       ok1(tdb_error(tdb) == TDB_ERR_EXISTS);
-       ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_NOEXIST);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_ERR_EXISTS);
+       ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_SUCCESS);
 
        data = tdb1_fetch(tdb, key);
        ok1(data.dsize == strlen("world"));
index 350c78b2b4f12f881fbba41b203eea2d72408d94..13ec5d826f050f274c49ef316e3a2cde04aa4022 100644 (file)
@@ -89,7 +89,7 @@ int main(int argc, char *argv[])
                ok1(log_count == 0);
                d.dptr = (void *)"Hello";
                d.dsize = 5;
-               ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+               ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
                tdb_close(tdb);
 
                /* Should not have marked rwlocks field. */
@@ -134,7 +134,7 @@ int main(int argc, char *argv[])
                ok1(log_count == 0);
                d.dptr = (void *)"Hello";
                d.dsize = 5;
-               ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+               ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
                tdb_close(tdb);
 
                /* Should have marked rwlocks field. */
@@ -183,7 +183,7 @@ int main(int argc, char *argv[])
                ok1(log_count == 0);
                d.dptr = (void *)"Hello";
                d.dsize = 5;
-               ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+               ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
                tdb_close(tdb);
 
                /* FIXME: Should have marked rwlocks field. */
index 63fa1de79f284caeb4b4fc78f3a5ed4e02201377..6a10b46b1b64886d5a1b4ff2f122d9112d022a16 100644 (file)
@@ -27,7 +27,7 @@ int main(int argc, char *argv[])
        ok1(tdb1_transaction_start(tdb) == 0);
        data.dptr = (void *)"world";
        data.dsize = strlen("world");
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
        data = tdb1_fetch(tdb, key);
        ok1(data.dsize == strlen("world"));
        ok1(memcmp(data.dptr, "world", strlen("world")) == 0);
index 02256200830ef1c5ac88101c5a8a439a214d7427..ef19911d14f058f54c331201cc3851064b0ecdb1 100644 (file)
@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
        data.dptr = (void *)"world";
        data.dsize = strlen("world");
 
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
        tdb1_traverse(tdb, traverse1, NULL);
        tdb1_traverse_read(tdb, traverse1, NULL);
        tdb_close(tdb);
index a418556d19c3f3df128bca7b8645d89ef291fecf..94c125dcadb8be9817cd6078e2637e6366809eda 100644 (file)
@@ -25,7 +25,7 @@ static bool prepare_entries(struct tdb_context *tdb)
                data.dsize = strlen("world");
                data.dptr = (void *)"world";
 
-               if (tdb1_store(tdb, key, data, 0) != 0)
+               if (tdb_store(tdb, key, data, 0) != TDB_SUCCESS)
                        return false;
        }
        return true;
index fd3a48086cd3ede713c8c7b10a8b371342c27974..879d79064716a1f8c442af01fb9c141707996510 100644 (file)
@@ -162,7 +162,7 @@ int main(int argc, char *argv[])
                data.dptr = (void *)"world";
                data.dsize = strlen("world");
 
-               ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+               ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
                ok1(tdb1_transaction_commit(tdb) == 0);
                ok(!errors, "We had %u open errors", errors);
 
index 9bc9a93a7f5b4047024b4fe388f0572d114137c1..6e1b57323c7f05db1c62f73b2a02289b759f1d3a 100644 (file)
@@ -16,7 +16,7 @@ int main(int argc, char *argv[])
        hsize.base.next = &tap_log_attr;
        hsize.tdb1_hashsize.hsize = 1024;
 
-       plan_tests(11);
+       plan_tests(10);
        tdb = tdb_open("run-readonly-check.tdb1",
                       TDB_VERSION1,
                       O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
@@ -27,7 +27,7 @@ int main(int argc, char *argv[])
        data.dsize = strlen("world");
        data.dptr = (void *)"world";
 
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
        ok1(tdb1_check(tdb, NULL, NULL) == 0);
 
        /* We are also allowed to do a check inside a transaction. */
@@ -39,8 +39,7 @@ int main(int argc, char *argv[])
                       TDB_DEFAULT, O_RDONLY, 0, &tap_log_attr);
 
        ok1(tdb);
-       ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == -1);
-       ok1(tdb_error(tdb) == TDB_ERR_RDONLY);
+       ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_RDONLY);
        ok1(tdb1_check(tdb, NULL, NULL) == 0);
        ok1(tdb_close(tdb) == 0);
 
index 45b4737286d1ad12cce80af9f11433ff9fe661ff..5107b8e4363616569d7b83e432bcd1e8c07892f9 100644 (file)
@@ -26,8 +26,10 @@ int main(int argc, char *argv[])
                for (j = 0; j < 500; j++) {
                        /* Make sure padding varies to we get some graphs! */
                        data.dsize = j % (sizeof(j) + 1);
-                       if (tdb1_store(tdb, key, data, TDB_REPLACE) != 0)
+                       if (tdb_store(tdb, key, data, TDB_REPLACE)
+                           != TDB_SUCCESS) {
                                fail("Storing in tdb");
+                       }
                }
 
                summary = tdb1_summary(tdb);
index 27df05ebb32310abbaeaf9a8eca1545c0c044bab..90783198d91be5bf62bce6d1ce809c28e002b95d 100644 (file)
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
        data.dptr = (void *)"world";
        data.dsize = strlen("world");
 
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
 
        ok1(external_agent_operation1(agent, OPEN, tdb->name) == SUCCESS);
 
index 61d56d6c8a780f7ec762421c6781e9a28ebf9c08..c7e789f2ca7a02f6dec0a87fdc3632fc315ba84d 100644 (file)
@@ -60,7 +60,7 @@ int main(int argc, char *argv[])
        ok1(log_count == 0);
        d.dptr = (void *)"Hello";
        d.dsize = 5;
-       ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+       ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
        tdb_close(tdb);
 
        /* Fail to open with different hash. */
index 2d551dc53828151e757760696ecca106d94cdcaa..584d7d6504f45cbba413f0e894e8c2fa53a5cbd5 100644 (file)
@@ -14,7 +14,7 @@ int main(int argc, char *argv[])
        hsize.base.next = &tap_log_attr;
        hsize.tdb1_hashsize.hsize = 1024;
 
-       plan_tests(10);
+       plan_tests(8);
        tdb = tdb_open("run.tdb1", TDB_VERSION1,
                       O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
 
@@ -24,12 +24,10 @@ int main(int argc, char *argv[])
        data.dsize = strlen("world");
        data.dptr = (void *)"world";
 
-       ok1(tdb1_store(tdb, key, data, TDB_MODIFY) < 0);
-       ok1(tdb_error(tdb) == TDB_ERR_NOEXIST);
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
-       ok1(tdb1_store(tdb, key, data, TDB_INSERT) < 0);
-       ok1(tdb_error(tdb) == TDB_ERR_EXISTS);
-       ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == 0);
+       ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_NOEXIST);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
+       ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_ERR_EXISTS);
+       ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_SUCCESS);
 
        data = tdb1_fetch(tdb, key);
        ok1(data.dsize == strlen("world"));
index eb52e55f62799381d1069acdd243a1aed5bcad9f..4a0d3835483dc4e6c8e504355e475d9d46cc716a 100644 (file)
@@ -66,7 +66,10 @@ static enum agent_return do_operation(enum operation op, const char *name)
                free(data.dptr);
                break;
        case STORE:
-               ret = tdb1_store(tdb, k, k, 0) == 0 ? SUCCESS : OTHER_FAILURE;
+               if (tdb_store(tdb, k, k, 0) == TDB_SUCCESS)
+                       ret = SUCCESS;
+               else
+                       ret = OTHER_FAILURE;
                break;
        case TRANSACTION_COMMIT:
                ret = tdb1_transaction_commit(tdb)==0 ? SUCCESS : OTHER_FAILURE;