From: Amitay Isaacs Date: Thu, 17 Mar 2016 06:26:30 +0000 (+1100) Subject: ctdb-recoverd: Add message handler to assigning banning credits X-Git-Tag: tdb-1.3.9~97 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae366fb932e9d42fbde5aa48f04d70e15dc36888;p=thirdparty%2Fsamba.git ctdb-recoverd: Add message handler to assigning banning credits This will be called from recovery helper to assign banning credits to misbehaving node. Signed-off-by: Amitay Isaacs Reviewed-by: Martin Schwenke --- diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 680ce7774b6..5d48fc3c4af 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -2628,6 +2628,30 @@ static void process_ipreallocate_requests(struct ctdb_context *ctdb, srvid_requests_reply(ctdb, ¤t, result); } +/* + * handler for assigning banning credits + */ +static void banning_handler(uint64_t srvid, TDB_DATA data, void *private_data) +{ + struct ctdb_recoverd *rec = talloc_get_type( + private_data, struct ctdb_recoverd); + uint32_t ban_pnn; + + /* Ignore if we are not recmaster */ + if (rec->ctdb->pnn != rec->recmaster) { + return; + } + + if (data.dsize != sizeof(uint32_t)) { + DEBUG(DEBUG_ERR, (__location__ "invalid data size %zu\n", + data.dsize)); + return; + } + + ban_pnn = *(uint32_t *)data.dptr; + + ctdb_set_culprit_count(rec, ban_pnn, rec->nodemap->num); +} /* handler for recovery master elections @@ -3856,6 +3880,10 @@ static void monitor_cluster(struct ctdb_context *ctdb) /* register a message port for sending memory dumps */ ctdb_client_set_message_handler(ctdb, CTDB_SRVID_MEM_DUMP, mem_dump_handler, rec); + /* when a node is assigned banning credits */ + ctdb_client_set_message_handler(ctdb, CTDB_SRVID_BANNING, + banning_handler, rec); + /* register a message port for recovery elections */ ctdb_client_set_message_handler(ctdb, CTDB_SRVID_ELECTION, election_handler, rec);