The branch, 1.0.112 has been updated
       via  9fa818afe0ccc1117a972a603b223f67c87eb00b (commit)
       via  fb10a98f31303a4620d022d53d282fd9de4ca555 (commit)
       via  d5c477c92252062d1c27f393ffb93471c00d75b6 (commit)
      from  8198e27e5d8dd1f5a927d75aff9ef122d7a5ac15 (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=1.0.112


- Log -----------------------------------------------------------------
commit 9fa818afe0ccc1117a972a603b223f67c87eb00b
Author: Ronnie Sahlberg <ronniesahlb...@gmail.com>
Date:   Fri Feb 12 12:17:48 2010 +1100

    Change ctdb to use the TDB_NOSEQNUM flag instead of the old/removed
    TDB_REPLACE_NOSEQNUM enum

commit fb10a98f31303a4620d022d53d282fd9de4ca555
Author: Ronnie Sahlberg <ronniesahlb...@gmail.com>
Date:   Fri Feb 12 12:17:12 2010 +1100

    Increase the package version for tdb to reflect the changes/additions to the
    API

commit d5c477c92252062d1c27f393ffb93471c00d75b6
Author: Ronnie Sahlberg <ronniesahlb...@gmail.com>
Date:   Fri Feb 12 12:05:57 2010 +1100

    Suggestion from Tridge.
    
    Change the flags argument in tdb_store()
    to take the low 4 bits as an enum describing the opeation
    and let the higher order bits be flags that modify the behaviour.
    
    Rename the no-seqnum-update to be a flag called TDB_NOSEQNUM
    
    Strip all the flags off the flags enum before using it in _tdb_store()

-----------------------------------------------------------------------

Summary of changes:
 common/ctdb_ltdb.c    |    2 +-
 lib/tdb/common/tdb.c  |   13 ++++++++-----
 lib/tdb/configure.ac  |    2 +-
 lib/tdb/include/tdb.h |    6 ++++--
 4 files changed, 14 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/common/ctdb_ltdb.c b/common/ctdb_ltdb.c
index d3d1fbc..038c191 100644
--- a/common/ctdb_ltdb.c
+++ b/common/ctdb_ltdb.c
@@ -159,7 +159,7 @@ int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, 
TDB_DATA key,
                && !memcmp(old.dptr+sizeof(struct ctdb_ltdb_header),
                          rec.dptr+sizeof(struct ctdb_ltdb_header),
                          rec.dsize-sizeof(struct ctdb_ltdb_header)) ) {
-                       flag = TDB_REPLACE_NOSEQNUM;
+                       flag |= TDB_NOSEQNUM;
                }
                if (old.dptr) free(old.dptr);
        }
diff --git a/lib/tdb/common/tdb.c b/lib/tdb/common/tdb.c
index 9287bc0..694c52e 100644
--- a/lib/tdb/common/tdb.c
+++ b/lib/tdb/common/tdb.c
@@ -466,15 +466,18 @@ static tdb_off_t tdb_find_dead(struct tdb_context *tdb, 
uint32_t hash,
 }
 
 static int _tdb_store(struct tdb_context *tdb, TDB_DATA key,
-                      TDB_DATA dbuf, int flag, uint32_t hash)
+                      TDB_DATA dbuf, int flags, uint32_t hash)
 {
        struct tdb_record rec;
        tdb_off_t rec_ptr;
        char *p = NULL;
        int ret = -1;
+       int op;
+
+       op = flags&TDB_STORE_ENUM_MASK;
 
        /* check for it existing, on insert. */
-       if (flag == TDB_INSERT) {
+       if (op == TDB_INSERT) {
                if (tdb_exists_hash(tdb, key, hash)) {
                        tdb->ecode = TDB_ERR_EXISTS;
                        goto fail;
@@ -485,7 +488,7 @@ static int _tdb_store(struct tdb_context *tdb, TDB_DATA key,
                        goto done;
                }
                if (tdb->ecode == TDB_ERR_NOEXIST &&
-                   flag == TDB_MODIFY) {
+                   op == TDB_MODIFY) {
                        /* if the record doesn't exist and we are in TDB_MODIFY 
mode then
                         we should fail the store */
                        goto fail;
@@ -497,7 +500,7 @@ static int _tdb_store(struct tdb_context *tdb, TDB_DATA key,
        /* delete any existing record - if it doesn't exist we don't
            care.  Doing this first reduces fragmentation, and avoids
            coalescing with `allocated' block before it's updated. */
-       if (flag != TDB_INSERT)
+       if (op != TDB_INSERT)
                tdb_delete_hash(tdb, key, hash);
 
        /* Copy key+value *before* allocating free space in case malloc
@@ -584,7 +587,7 @@ static int _tdb_store(struct tdb_context *tdb, TDB_DATA key,
        ret = 0;
  fail:
        if (ret == 0) {
-               if (flag != TDB_REPLACE_NOSEQNUM) {
+               if (!(flags & TDB_NOSEQNUM)) {
                        tdb_increment_seqnum(tdb);
                }
        }
diff --git a/lib/tdb/configure.ac b/lib/tdb/configure.ac
index 779f596..ef9a472 100644
--- a/lib/tdb/configure.ac
+++ b/lib/tdb/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
 AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
 AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
 AC_DEFUN([SMB_ENABLE], [echo -n ""])
-AC_INIT(tdb, 1.2.0)
+AC_INIT(tdb, 1.2.1)
 AC_CONFIG_SRCDIR([common/tdb.c])
 AC_CONFIG_HEADER(include/config.h)
 AC_LIBREPLACE_ALL_CHECKS
diff --git a/lib/tdb/include/tdb.h b/lib/tdb/include/tdb.h
index 13cd6b6..7e72f89 100644
--- a/lib/tdb/include/tdb.h
+++ b/lib/tdb/include/tdb.h
@@ -32,11 +32,13 @@ extern "C" {
 
 #include "signal.h"
 
-/* flags to tdb_store() */
+/* enums to tdb_store() */
 #define TDB_REPLACE 1          /* Unused */
 #define TDB_INSERT 2           /* Don't overwrite an existing entry */
 #define TDB_MODIFY 3           /* Don't create an existing entry    */
-#define TDB_REPLACE_NOSEQNUM 4 /* Replace but dont bump the seqnum */
+#define TDB_STORE_ENUM_MASK 0x0f
+ /* flags to tdb_store */
+#define TDB_NOSEQNUM 0x10      /* Don't bump the seqnum */
 
 /* flags for tdb_open() */
 #define TDB_DEFAULT 0 /* just a readability place holder */


-- 
CTDB repository

Reply via email to