[SCM] CTDB repository - branch 1.2.40 updated - ctdb-1.9.1-559-gb54938c

Ronnie Sahlberg sahlberg at samba.org
Wed Mar 28 17:42:26 MDT 2012


The branch, 1.2.40 has been updated
       via  b54938c8dfaac046aee9eec92724e7ba2153d65a (commit)
       via  ba78c020dcb525762e5fde943fc60084120884ed (commit)
      from  d967d1bcf72d32312ca765bb467d03ddd4690cb7 (commit)

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


- Log -----------------------------------------------------------------
commit b54938c8dfaac046aee9eec92724e7ba2153d65a
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Mar 29 10:10:04 2012 +1100

    New version 1.2.43

commit ba78c020dcb525762e5fde943fc60084120884ed
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 31 13:29:13 2011 +0100

    Add CTDB_CONTROL_CHECK_SRVID

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

Summary of changes:
 include/ctdb_private.h     |    2 ++
 include/ctdb_protocol.h    |    1 +
 packaging/RPM/ctdb.spec.in |    4 +++-
 server/ctdb_control.c      |    3 +++
 server/ctdb_daemon.c       |   36 ++++++++++++++++++++++++++++++++++++
 5 files changed, 45 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/include/ctdb_private.h b/include/ctdb_private.h
index 8180722..e3b5a20 100644
--- a/include/ctdb_private.h
+++ b/include/ctdb_private.h
@@ -967,6 +967,8 @@ int ctdb_dispatch_message(struct ctdb_context *ctdb, uint64_t srvid, TDB_DATA da
 int daemon_register_message_handler(struct ctdb_context *ctdb, uint32_t client_id, uint64_t srvid);
 int ctdb_deregister_message_handler(struct ctdb_context *ctdb, uint64_t srvid, void *private_data);
 int daemon_deregister_message_handler(struct ctdb_context *ctdb, uint32_t client_id, uint64_t srvid);
+int daemon_check_srvids(struct ctdb_context *ctdb, TDB_DATA indata,
+			TDB_DATA *outdata);
 
 int32_t ctdb_ltdb_enable_seqnum(struct ctdb_context *ctdb, uint32_t db_id);
 int32_t ctdb_ltdb_update_seqnum(struct ctdb_context *ctdb, uint32_t db_id, uint32_t srcnode);
diff --git a/include/ctdb_protocol.h b/include/ctdb_protocol.h
index c874148..99acd43 100644
--- a/include/ctdb_protocol.h
+++ b/include/ctdb_protocol.h
@@ -372,6 +372,7 @@ enum ctdb_controls {CTDB_CONTROL_PROCESS_EXISTS          = 0,
 		    CTDB_CONTROL_GET_STAT_HISTORY	 = 127,
 		    CTDB_CONTROL_SCHEDULE_FOR_DELETION   = 128,
 		    CTDB_CONTROL_SET_DB_READONLY	 = 129,
+		    CTDB_CONTROL_CHECK_SRVIDS		 = 130,
 };
 
 /*
diff --git a/packaging/RPM/ctdb.spec.in b/packaging/RPM/ctdb.spec.in
index 7519be1..9ec9192 100644
--- a/packaging/RPM/ctdb.spec.in
+++ b/packaging/RPM/ctdb.spec.in
@@ -3,7 +3,7 @@ Name: ctdb
 Summary: Clustered TDB
 Vendor: Samba Team
 Packager: Samba Team <samba at samba.org>
-Version: 1.2.42
+Version: 1.2.43
 Release: 1GITHASH
 Epoch: 0
 License: GNU GPL version 3
@@ -144,6 +144,8 @@ development libraries for ctdb
 %{_libdir}/libctdb.a
 
 %changelog
+* Thu Mar 29 2012 : Version 1.2.43
+ - Add CTDB_CONTROL_CHECK_SRVID control
 * Mon Mar 12 2012 : Version 1.2.42
  - Allow non-readonly database UPDATE_RECORD to create non-existing records
    or else net command and the registry breaks.
diff --git a/server/ctdb_control.c b/server/ctdb_control.c
index 9c2f742..5968b3e 100644
--- a/server/ctdb_control.c
+++ b/server/ctdb_control.c
@@ -263,6 +263,9 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb,
 	case CTDB_CONTROL_DEREGISTER_SRVID:
 		return daemon_deregister_message_handler(ctdb, client_id, srvid);
 
+	case CTDB_CONTROL_CHECK_SRVIDS:
+		return daemon_check_srvids(ctdb, indata, outdata);
+
 	case CTDB_CONTROL_ENABLE_SEQNUM:
 		CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));
 		return ctdb_ltdb_enable_seqnum(ctdb, *(uint32_t *)indata.dptr);
diff --git a/server/ctdb_daemon.c b/server/ctdb_daemon.c
index caa70cf..81cec67 100644
--- a/server/ctdb_daemon.c
+++ b/server/ctdb_daemon.c
@@ -204,6 +204,42 @@ int daemon_deregister_message_handler(struct ctdb_context *ctdb, uint32_t client
 	return ctdb_deregister_message_handler(ctdb, srvid, client);
 }
 
+int daemon_check_srvids(struct ctdb_context *ctdb, TDB_DATA indata,
+			TDB_DATA *outdata)
+{
+	uint64_t *ids;
+	int i, num_ids;
+	uint8_t *results;
+
+	if ((indata.dsize % sizeof(uint64_t)) != 0) {
+		DEBUG(DEBUG_ERR, ("Bad indata in daemon_check_srvids, "
+				  "size=%d\n", (int)indata.dsize));
+		return -1;
+	}
+
+	ids = (uint64_t *)indata.dptr;
+	num_ids = indata.dsize / 8;
+
+	results = talloc_zero_array(outdata, uint8_t, (num_ids+7)/8);
+	if (results == NULL) {
+		DEBUG(DEBUG_ERR, ("talloc failed in daemon_check_srvids\n"));
+		return -1;
+	}
+	for (i=0; i<num_ids; i++) {
+		struct ctdb_message_list *ml;
+		for (ml=ctdb->message_list; ml; ml=ml->next) {
+			if (ml->srvid == ids[i]) {
+				break;
+			}
+		}
+		if (ml != NULL) {
+			results[i/8] |= (1 << (i%8));
+		}
+	}
+	outdata->dptr = (uint8_t *)results;
+	outdata->dsize = talloc_get_size(results);
+	return 0;
+}
 
 /*
   destroy a ctdb_client


-- 
CTDB repository


More information about the samba-cvs mailing list