[SCM] CTDB repository - branch 1.0.112 updated - ctdb-1.0.111-80-g9ade366

Ronnie Sahlberg sahlberg at samba.org
Mon May 10 17:45:54 MDT 2010


The branch, 1.0.112 has been updated
       via  9ade3668899499346ed57368682c69264bc7320e (commit)
       via  08687511f7b81cccf72ca023947968e3d5adf3e3 (commit)
       via  3000b0c2d50d8f33141cc17406b17315e8c5fd6e (commit)
      from  812f3dcefa6ed844637450077f7ee69dc8d41954 (commit)

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


- Log -----------------------------------------------------------------
commit 9ade3668899499346ed57368682c69264bc7320e
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue May 11 09:35:03 2010 +1000

    New version 1.0.112-20
    
    +* Tue May 11 2010 : Version 1.0.112-20
    + - Add number of recoveries done to the ctdb statistics output.
    + - Use the fuill range for IDR values.
    +   BZ 60540
    + - When performing a recovery, make sure all nodes agree with recmaster
    +   on the reclock file.
    +   BZ 62748
    + - Lower the loglevel for some debug messages
    +   BZ 63074

commit 08687511f7b81cccf72ca023947968e3d5adf3e3
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue May 11 09:28:59 2010 +1000

    Add the number of performed recoveries to the "ctdb statistics" output.

commit 3000b0c2d50d8f33141cc17406b17315e8c5fd6e
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Sat May 8 22:24:11 2010 +0930

    ctdb: use full range of IDR
    
    This resolves a problem with huge numbers of requests which could overflow
    16 bits.  Fortunately, the IDR should scale reasonably well, so we can simply
    hold all the requests.
    
    Although noone checks for failure, I added a constant for that.
    
    BZ: 60540
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>

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

Summary of changes:
 common/ctdb_util.c         |   10 +++-------
 include/ctdb_private.h     |    2 ++
 packaging/RPM/ctdb.spec.in |   11 ++++++++++-
 server/ctdb_recover.c      |    1 +
 tools/ctdb.c               |    1 +
 5 files changed, 17 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/common/ctdb_util.c b/common/ctdb_util.c
index acc57c9..87f61e7 100644
--- a/common/ctdb_util.c
+++ b/common/ctdb_util.c
@@ -159,18 +159,14 @@ void ctdb_reclock_latency(struct ctdb_context *ctdb, const char *name, double *l
 
 uint32_t ctdb_reqid_new(struct ctdb_context *ctdb, void *state)
 {
-	uint32_t id;
-
-	id  = ctdb->idr_cnt++ & 0xFFFF;
-	id |= (idr_get_new(ctdb->idr, state, 0xFFFF)<<16);
-	return id;
+	return idr_get_new(ctdb->idr, state, INT_MAX);
 }
 
 void *_ctdb_reqid_find(struct ctdb_context *ctdb, uint32_t reqid, const char *type, const char *location)
 {
 	void *p;
 
-	p = _idr_find_type(ctdb->idr, (reqid>>16)&0xFFFF, type, location);
+	p = _idr_find_type(ctdb->idr, reqid, type, location);
 	if (p == NULL) {
 		DEBUG(DEBUG_WARNING, ("Could not find idr:%u\n",reqid));
 	}
@@ -183,7 +179,7 @@ void ctdb_reqid_remove(struct ctdb_context *ctdb, uint32_t reqid)
 {
 	int ret;
 
-	ret = idr_remove(ctdb->idr, (reqid>>16)&0xFFFF);
+	ret = idr_remove(ctdb->idr, reqid);
 	if (ret != 0) {
 		DEBUG(DEBUG_ERR, ("Removing idr that does not exist\n"));
 	}
diff --git a/include/ctdb_private.h b/include/ctdb_private.h
index 6c70623..6893d67 100644
--- a/include/ctdb_private.h
+++ b/include/ctdb_private.h
@@ -344,6 +344,7 @@ struct ctdb_statistics {
 	double max_call_latency;
 	double max_lockwait_latency;
 	double max_childwrite_latency;
+	uint32_t num_recoveries;
 };
 
 
@@ -1032,6 +1033,7 @@ int ctdb_socket_connect(struct ctdb_context *ctdb);
 void ctdb_latency(struct ctdb_db_context *ctdb_db, const char *name, double *latency, struct timeval t);
 void ctdb_reclock_latency(struct ctdb_context *ctdb, const char *name, double *latency, double l);
 
+#define CTDB_BAD_REQID ((uint32_t)-1)
 uint32_t ctdb_reqid_new(struct ctdb_context *ctdb, void *state);
 void *_ctdb_reqid_find(struct ctdb_context *ctdb, uint32_t reqid, const char *type, const char *location);
 void ctdb_reqid_remove(struct ctdb_context *ctdb, uint32_t reqid);
diff --git a/packaging/RPM/ctdb.spec.in b/packaging/RPM/ctdb.spec.in
index 1e9c74c..fbd7a2a 100644
--- a/packaging/RPM/ctdb.spec.in
+++ b/packaging/RPM/ctdb.spec.in
@@ -5,7 +5,7 @@ Vendor: Samba Team
 Packager: Samba Team <samba at samba.org>
 Name: ctdb
 Version: 1.0.112
-Release: 19
+Release: 20
 Epoch: 0
 License: GNU GPL version 3
 Group: System Environment/Daemons
@@ -125,6 +125,15 @@ rm -rf $RPM_BUILD_ROOT
 %{_docdir}/ctdb/tests/bin/ctdb_transaction
 
 %changelog
+* Tue May 11 2010 : Version 1.0.112-20
+ - Add number of recoveries done to the ctdb statistics output.
+ - Use the fuill range for IDR values. 
+   BZ 60540
+ - When performing a recovery, make sure all nodes agree with recmaster
+   on the reclock file.
+   BZ 62748
+ - Lower the loglevel for some debug messages
+   BZ 63074
 * Tue May 4 2010 : Version 1.0.112-19
  - Add an eventscript 62.cnfs to allow better integration with GPFS.
    BZ 61913
diff --git a/server/ctdb_recover.c b/server/ctdb_recover.c
index 4a1e04c..22e4898 100644
--- a/server/ctdb_recover.c
+++ b/server/ctdb_recover.c
@@ -938,6 +938,7 @@ static void ctdb_end_recovery_callback(struct ctdb_context *ctdb, int status, vo
 	struct recovery_callback_state *state = talloc_get_type(p, struct recovery_callback_state);
 
 	ctdb_enable_monitoring(ctdb);
+	ctdb->statistics.num_recoveries++;
 
 	if (status != 0) {
 		DEBUG(DEBUG_ERR,(__location__ " recovered event script failed (status %d)\n", status));
diff --git a/tools/ctdb.c b/tools/ctdb.c
index f91c77d..7ae3974 100644
--- a/tools/ctdb.c
+++ b/tools/ctdb.c
@@ -166,6 +166,7 @@ static void show_statistics(struct ctdb_statistics *s)
 		STATISTICS_FIELD(num_clients),
 		STATISTICS_FIELD(frozen),
 		STATISTICS_FIELD(recovering),
+		STATISTICS_FIELD(num_recoveries),
 		STATISTICS_FIELD(client_packets_sent),
 		STATISTICS_FIELD(client_packets_recv),
 		STATISTICS_FIELD(node_packets_sent),


-- 
CTDB repository


More information about the samba-cvs mailing list