mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
ctdb-daemon: Factor out new function ctdb_node_become_inactive()
This is a superset of ctdb_local_node_got_banned() so will replace that function, and will also be used in the NODE_STOP control. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14087 Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
parent
f8e79be2c1
commit
a42bcaabb6
@ -819,6 +819,8 @@ int32_t ctdb_control_recd_ping(struct ctdb_context *ctdb);
|
||||
int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb,
|
||||
uint32_t opcode, TDB_DATA indata);
|
||||
|
||||
void ctdb_node_become_inactive(struct ctdb_context *ctdb);
|
||||
|
||||
int32_t ctdb_control_stop_node(struct ctdb_context *ctdb);
|
||||
int32_t ctdb_control_continue_node(struct ctdb_context *ctdb);
|
||||
|
||||
|
@ -1420,6 +1420,49 @@ int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb, uint32_t opcode, T
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ctdb_node_become_inactive(struct ctdb_context *ctdb)
|
||||
{
|
||||
struct ctdb_db_context *ctdb_db;
|
||||
|
||||
D_WARNING("Making node INACTIVE\n");
|
||||
|
||||
/*
|
||||
* Do not service database calls - reset generation to invalid
|
||||
* so this node ignores any REQ/REPLY CALL/DMASTER
|
||||
*/
|
||||
ctdb->vnn_map->generation = INVALID_GENERATION;
|
||||
for (ctdb_db = ctdb->db_list; ctdb_db != NULL; ctdb_db = ctdb_db->next) {
|
||||
ctdb_db->generation = INVALID_GENERATION;
|
||||
}
|
||||
|
||||
/*
|
||||
* Although this bypasses the control, the only thing missing
|
||||
* is the deferred drop of all public IPs, which isn't
|
||||
* necessary because they are dropped below
|
||||
*/
|
||||
if (ctdb->recovery_mode != CTDB_RECOVERY_ACTIVE) {
|
||||
D_NOTICE("Recovery mode set to ACTIVE\n");
|
||||
ctdb->recovery_mode = CTDB_RECOVERY_ACTIVE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initiate database freeze - this will be scheduled for
|
||||
* immediate execution and will be in progress long before the
|
||||
* calling control returns
|
||||
*/
|
||||
ctdb_daemon_send_control(ctdb,
|
||||
ctdb->pnn,
|
||||
0,
|
||||
CTDB_CONTROL_FREEZE,
|
||||
0,
|
||||
CTDB_CTRL_FLAG_NOREPLY,
|
||||
tdb_null,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
D_NOTICE("Dropping all public IP addresses\n");
|
||||
ctdb_release_all_ips(ctdb);
|
||||
}
|
||||
|
||||
int32_t ctdb_control_stop_node(struct ctdb_context *ctdb)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user