]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-protocol: Add srvid for assigning banning credits
authorAmitay Isaacs <amitay@gmail.com>
Thu, 17 Mar 2016 06:16:09 +0000 (17:16 +1100)
committerMartin Schwenke <martins@samba.org>
Fri, 25 Mar 2016 02:26:16 +0000 (03:26 +0100)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/protocol/protocol.h
ctdb/protocol/protocol_debug.c
ctdb/protocol/protocol_message.c

index 28f036eff55d1a8421bfe780a6e070922b95e0a2..3914c69209127e29d9c58a649d5776e65ff0dad8 100644 (file)
@@ -124,6 +124,9 @@ struct ctdb_call {
 /* SRVID prefix used during recovery for pulling and pushing databases */
 #define CTDB_SRVID_RECOVERY    0xF001000000000000LL
 
+/* SRVID to assign of banning credits */
+#define CTDB_SRVID_BANNING     0xF002000000000000LL
+
 /* SRVID to inform of election data */
 #define CTDB_SRVID_ELECTION    0xF100000000000000LL
 
@@ -992,7 +995,7 @@ union ctdb_message_data {
        uint32_t db_id;
        /* SRVID_MEM_DUMP, SRVID_TAKEOVER_RUN */
        struct ctdb_srvid_message *msg;
-       /* SRVID_REBALANCE_NODE */
+       /* SRVID_BANNING, SRVID_REBALANCE_NODE */
        uint32_t pnn;
        /* SRVID_DISABLE_TAKEOVER_RUNS, SRVID_DISABLE_RECOVERIES */
        struct ctdb_disable_message *disable;
index 889ebec377f00a3164a370f0511075820fbcafdb..c54e014e2d5bcd2c3ed2666e6331de6421b02180 100644 (file)
@@ -282,6 +282,8 @@ static void ctdb_srvid_print(uint64_t srvid, FILE *fp)
        } else if ((srvid & prefix) == CTDB_SRVID_RECOVERY) {
                srvid = srvid & ~CTDB_SRVID_RECOVERY;
                fprintf(fp, "RECOVERY-%"PRIx64"", srvid);
+       } else if (srvid == CTDB_SRVID_BANNING) {
+               fprintf(fp, "BANNING");
        } else if (srvid == CTDB_SRVID_ELECTION) {
                fprintf(fp, "ELECTION");
        } else if (srvid == CTDB_SRVID_RECONFIGURE) {
index b6701092c85c06602c2d2aec7e2334eaa1da6af9..920cd1cd14afd554d5b2691108168d68af534325 100644 (file)
@@ -40,6 +40,10 @@ static size_t ctdb_message_data_len(union ctdb_message_data *mdata,
        size_t len = 0;
 
        switch (srvid) {
+       case CTDB_SRVID_BANNING:
+               len = ctdb_uint32_len(mdata->pnn);
+               break;
+
        case CTDB_SRVID_ELECTION:
                len = ctdb_election_message_len(mdata->election);
                break;
@@ -114,6 +118,10 @@ static void ctdb_message_data_push(union ctdb_message_data *mdata,
                                   uint64_t srvid, uint8_t *buf)
 {
        switch (srvid) {
+       case CTDB_SRVID_BANNING:
+               ctdb_uint32_push(mdata->pnn, buf);
+               break;
+
        case CTDB_SRVID_ELECTION:
                ctdb_election_message_push(mdata->election, buf);
                break;
@@ -189,6 +197,10 @@ static int ctdb_message_data_pull(uint8_t *buf, size_t buflen,
        int ret = 0;
 
        switch (srvid) {
+       case CTDB_SRVID_BANNING:
+               ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &mdata->pnn);
+               break;
+
        case CTDB_SRVID_ELECTION:
                ret = ctdb_election_message_pull(buf, buflen, mem_ctx,
                                                 &mdata->election);