Rev 376: clean shutdown in ctdb - release all our IPs in http://samba.org/~tridge/ctdb

tridge at samba.org tridge at samba.org
Tue May 29 03:34:00 GMT 2007


------------------------------------------------------------
revno: 376
revision-id: tridge at samba.org-20070529033359-zvutvg5816i8pp2f
parent: tridge at samba.org-20070529032137-pfsv1azm496c6mg0
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Tue 2007-05-29 13:33:59 +1000
message:
  clean shutdown in ctdb - release all our IPs
modified:
  common/ctdb_control.c          ctdb_control.c-20070426122724-j6gkpiofhbwdin63-1
  include/ctdb_private.h         ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
  takeover/ctdb_takeover.c       ctdb_takeover.c-20070525071636-a5n1ihghjtppy08r-2
  tools/events                   events-20070529030121-04fjh63cxfh8v1pj-1
=== modified file 'common/ctdb_control.c'
--- a/common/ctdb_control.c	2007-05-29 02:16:59 +0000
+++ b/common/ctdb_control.c	2007-05-29 03:33:59 +0000
@@ -250,7 +250,10 @@
 		return ctdb->monitoring_mode;
 
 	case CTDB_CONTROL_SHUTDOWN:
-		exit(10);
+		ctdb_release_all_ips(ctdb);
+		ctdb_event_script(ctdb, "shutdown");
+		DEBUG(0,("shutting down\n"));
+		exit(0);
 
 	case CTDB_CONTROL_MAX_RSN: 
 		CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));

=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h	2007-05-29 02:55:24 +0000
+++ b/include/ctdb_private.h	2007-05-29 03:33:59 +0000
@@ -946,5 +946,6 @@
 
 void ctdb_takeover_client_destructor_hook(struct ctdb_client *client);
 int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...);
+void ctdb_release_all_ips(struct ctdb_context *ctdb);
 
 #endif

=== modified file 'takeover/ctdb_takeover.c'
--- a/takeover/ctdb_takeover.c	2007-05-29 02:55:24 +0000
+++ b/takeover/ctdb_takeover.c	2007-05-29 03:33:59 +0000
@@ -526,3 +526,26 @@
 		talloc_free(tcp);
 	}
 }
+
+
+/*
+  release all IPs on shutdown
+ */
+void ctdb_release_all_ips(struct ctdb_context *ctdb)
+{
+	int i;
+
+	if (!ctdb->takeover.enabled) {
+		return;
+	}
+
+	for (i=0;i<ctdb->num_nodes;i++) {
+		struct ctdb_node *node = ctdb->nodes[i];
+		if (ctdb_sys_have_ip(node->public_address)) {
+			ctdb_event_script(ctdb, "releaseip %s %s %u",
+					  ctdb->takeover.interface, 
+					  node->public_address,
+					  node->public_netmask_bits);
+		}
+	}
+}

=== modified file 'tools/events'
--- a/tools/events	2007-05-29 03:21:37 +0000
+++ b/tools/events	2007-05-29 03:33:59 +0000
@@ -30,6 +30,7 @@
 	;;
 
      recovered)
+     shutdown)
         # restart any services as necessary, like NFS
 	exit 0
 	;;



More information about the samba-cvs mailing list