]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-recoverd: Add pnn field to banning state structure
authorMartin Schwenke <martin@meltin.net>
Wed, 29 Jul 2020 02:15:03 +0000 (12:15 +1000)
committerAmitay Isaacs <amitay@samba.org>
Fri, 22 Jul 2022 16:09:31 +0000 (16:09 +0000)
This structure is now standalone, so indexing by PNN can be avoided
via a subsequent commit.  Index by culprit here to make this commit
simple.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/ctdb_recoverd.c

index 9c52fdf60290af7b60cad588fe68023d7ddbcf94..e2006f5d82801269eb26c1a3c18c427b1ec39aa5 100644 (file)
@@ -237,6 +237,7 @@ static int ctdb_op_disable(struct ctdb_op_state *state,
 }
 
 struct ctdb_banning_state {
+       uint32_t pnn;
        uint32_t count;
        struct timeval last_reported_time;
 };
@@ -360,8 +361,7 @@ static void ctdb_set_culprit_count(struct ctdb_recoverd *rec, uint32_t culprit,
        if (ctdb->nodes[culprit]->ban_state == NULL) {
                ctdb->nodes[culprit]->ban_state = talloc_zero(ctdb->nodes[culprit], struct ctdb_banning_state);
                CTDB_NO_MEMORY_VOID(ctdb, ctdb->nodes[culprit]->ban_state);
-
-               
+               ctdb->nodes[culprit]->ban_state->pnn = culprit;
        }
        ban_state = ctdb->nodes[culprit]->ban_state;
        if (timeval_elapsed(&ban_state->last_reported_time) > ctdb->tunable.recovery_grace_period) {
@@ -963,13 +963,13 @@ static void ban_misbehaving_nodes(struct ctdb_recoverd *rec, bool *self_ban)
                }
 
                D_NOTICE("Node %u reached %u banning credits\n",
-                        ctdb->nodes[i]->pnn,
+                        ban_state->pnn,
                         ban_state->count);
-               ctdb_ban_node(rec, ctdb->nodes[i]->pnn);
+               ctdb_ban_node(rec, ban_state->pnn);
                ban_state->count = 0;
 
                /* Banning ourself? */
-               if (ctdb->nodes[i]->pnn == rec->pnn) {
+               if (ban_state->pnn == rec->pnn) {
                        *self_ban = true;
                }
        }