return -1;
}
ctdb->recovery_mode = recmode;
+ ctdb_event_script(ctdb, "recovered");
return 0;
}
int32_t ctdb_control_startup(struct ctdb_context *ctdb, uint32_t vnn);
void ctdb_takeover_client_destructor_hook(struct ctdb_client *client);
-
+int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...);
#endif
}
-/*
- run the event script
- */
-static int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...)
-{
- va_list ap;
- char *cmdstr;
- int ret;
-
- va_start(ap, fmt);
- cmdstr = talloc_vasprintf(ctdb, fmt, ap);
- va_end(ap);
- CTDB_NO_MEMORY(ctdb, cmdstr);
-
- ret = system(cmdstr);
- talloc_free(cmdstr);
-
- return ret;
-}
-
/*
take over an ip address
*/
return ret == 0;
}
+/*
+ run the event script
+ */
+int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...)
+{
+ va_list ap;
+ char *options, *cmdstr;
+ int ret;
+
+ va_start(ap, fmt);
+ options = talloc_vasprintf(ctdb, fmt, ap);
+ va_end(ap);
+ CTDB_NO_MEMORY(ctdb, options);
+
+ cmdstr = talloc_asprintf(ctdb, "%s %s", ctdb->takeover.event_script, options);
+ CTDB_NO_MEMORY(ctdb, cmdstr);
+
+ ret = system(cmdstr);
+
+ talloc_free(cmdstr);
+ talloc_free(options);
+
+ return ret;
+}
+