[SCM] CTDB repository - branch master updated - f3a729998ce67f5d2e3b2ad41d96e8f04c0d18d8

Andrew Tridgell tridge at samba.org
Fri Jul 4 07:32:32 GMT 2008


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 <tridge at samba.org>
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 <tridge at samba.org>
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


More information about the samba-cvs mailing list