The branch, master has been updated
       via  f3a729998ce67f5d2e3b2ad41d96e8f04c0d18d8 (commit)
       via  ababd8aba2f9c13aaa1b623b8a76c2f98bb94dd4 (commit)
      from  015cd221c3c62eaa3cd0351fb8e93292c7c293aa (commit)

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


- Log -----------------------------------------------------------------
commit f3a729998ce67f5d2e3b2ad41d96e8f04c0d18d8
Author: Andrew Tridgell <[EMAIL PROTECTED]>
Date:   Fri Jul 4 17:32:21 2008 +1000

    don't use mmap in tdb if --nosetsched is set. That makes valgrind
    happier (it doesn't like the mmap/msync calls in tdb)

commit ababd8aba2f9c13aaa1b623b8a76c2f98bb94dd4
Author: Andrew Tridgell <[EMAIL PROTECTED]>
Date:   Fri Jul 4 17:15:06 2008 +1000

    prevent valgrind errors where we print unitialised values on control errors

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

Summary of changes:
 client/ctdb_client.c      |   14 +++++++++++++-
 server/ctdb_ltdb_server.c |    8 +++++++-
 server/ctdb_recoverd.c    |    9 ++++++++-
 3 files changed, 28 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/client/ctdb_client.c b/client/ctdb_client.c
index f342553..ed999f2 100644
--- a/client/ctdb_client.c
+++ b/client/ctdb_client.c
@@ -884,6 +884,13 @@ int ctdb_control_recv(struct ctdb_context *ctdb,
 {
        TALLOC_CTX *tmp_ctx;
 
+       if (status != NULL) {
+               *status = -1;
+       }
+       if (errormsg != NULL) {
+               *errormsg = NULL;
+       }
+
        if (state == NULL) {
                return -1;
        }
@@ -1683,7 +1690,12 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context 
*ctdb, const char *name,
                return NULL;
        }
 
-       ctdb_db->ltdb = tdb_wrap_open(ctdb, ctdb_db->db_path, 0, 
persistent?TDB_DEFAULT:TDB_NOSYNC, O_RDWR, 0);
+       tdb_flags = persistent?TDB_DEFAULT:TDB_NOSYNC;
+       if (!ctdb->do_setsched) {
+               tdb_flags |= TDB_NOMMAP;
+       }
+
+       ctdb_db->ltdb = tdb_wrap_open(ctdb, ctdb_db->db_path, 0, tdb_flags, 
O_RDWR, 0);
        if (ctdb_db->ltdb == NULL) {
                ctdb_set_error(ctdb, "Failed to open tdb '%s'\n", 
ctdb_db->db_path);
                talloc_free(ctdb_db);
diff --git a/server/ctdb_ltdb_server.c b/server/ctdb_ltdb_server.c
index 5146ed8..a6ad4ee 100644
--- a/server/ctdb_ltdb_server.c
+++ b/server/ctdb_ltdb_server.c
@@ -197,6 +197,7 @@ static int ctdb_local_attach(struct ctdb_context *ctdb, 
const char *db_name, boo
        struct ctdb_db_context *ctdb_db, *tmp_db;
        int ret;
        struct TDB_DATA key;
+       unsigned tdb_flags;
 
        ctdb_db = talloc_zero(ctdb, struct ctdb_db_context);
        CTDB_NO_MEMORY(ctdb, ctdb_db);
@@ -244,9 +245,14 @@ static int ctdb_local_attach(struct ctdb_context *ctdb, 
const char *db_name, boo
                                           
persistent?ctdb->db_directory_persistent:ctdb->db_directory, 
                                           db_name, ctdb->pnn);
 
+       tdb_flags = persistent? TDB_DEFAULT : TDB_CLEAR_IF_FIRST | TDB_NOSYNC;
+       if (!ctdb->do_setsched) {
+               tdb_flags |= TDB_NOMMAP;
+       }
+
        ctdb_db->ltdb = tdb_wrap_open(ctdb, ctdb_db->db_path, 
                                      ctdb->tunable.database_hash_size, 
-                                     persistent? TDB_DEFAULT : 
TDB_CLEAR_IF_FIRST | TDB_NOSYNC, 
+                                     tdb_flags, 
                                      O_CREAT|O_RDWR, 0666);
        if (ctdb_db->ltdb == NULL) {
                DEBUG(DEBUG_CRIT,("Failed to open tdb '%s'\n", 
ctdb_db->db_path));
diff --git a/server/ctdb_recoverd.c b/server/ctdb_recoverd.c
index f161e7c..a20776a 100644
--- a/server/ctdb_recoverd.c
+++ b/server/ctdb_recoverd.c
@@ -1105,6 +1105,7 @@ static struct tdb_wrap *create_recdb(struct ctdb_context 
*ctdb, TALLOC_CTX *mem_
 {
        char *name;
        struct tdb_wrap *recdb;
+       unsigned tdb_flags;
 
        /* open up the temporary recovery database */
        name = talloc_asprintf(mem_ctx, "%s/recdb.tdb", ctdb->db_directory);
@@ -1112,8 +1113,14 @@ static struct tdb_wrap *create_recdb(struct ctdb_context 
*ctdb, TALLOC_CTX *mem_
                return NULL;
        }
        unlink(name);
+
+       tdb_flags = TDB_NOLOCK;
+       if (!ctdb->do_setsched) {
+               tdb_flags |= TDB_NOMMAP;
+       }
+
        recdb = tdb_wrap_open(mem_ctx, name, ctdb->tunable.database_hash_size, 
-                             TDB_NOLOCK, O_RDWR|O_CREAT|O_EXCL, 0600);
+                             tdb_flags, O_RDWR|O_CREAT|O_EXCL, 0600);
        if (recdb == NULL) {
                DEBUG(DEBUG_CRIT,(__location__ " Failed to create temp recovery 
database '%s'\n", name));
        }


-- 
CTDB repository

Reply via email to