block_signal(SIGPIPE);
/* try to set us up as realtime */
- ctdb_set_realtime();
+ ctdb_set_realtime(true);
/* ensure the socket is deleted on exit of the daemon */
domain_socket_name = talloc_strdup(talloc_autofree_context(), ctdb->daemon.name);
/*
if possible, make this task real time
*/
-void ctdb_set_realtime(void)
+void ctdb_set_realtime(bool enable)
{
#if HAVE_SCHED_SETSCHEDULER
struct sched_param p;
p.__sched_priority = 1;
- if (sched_setscheduler(getpid(), SCHED_FIFO, &p) == -1) {
- DEBUG(0,("Unable to set scheduler to SCHED_FIFO (%s)\n", strerror(errno)));
+ if (enable) {
+ if (sched_setscheduler(getpid(), SCHED_FIFO, &p) == -1) {
+ DEBUG(0,("Unable to set scheduler to SCHED_FIFO (%s)\n", strerror(errno)));
+ } else {
+ DEBUG(0,("Set scheduler to SCHED_FIFO\n"));
+ }
} else {
- DEBUG(0,("Set scheduler to SCHED_FIFO\n"));
+ sched_setscheduler(getpid(), SCHED_OTHER, &p);
}
#endif
}
uint32_t destnode, uint32_t db_id, uint64_t rsn);
int ctdb_ctrl_delete_low_rsn(struct ctdb_context *ctdb, struct timeval timeout,
uint32_t destnode, uint32_t db_id, uint64_t rsn);
-void ctdb_set_realtime(void);
+void ctdb_set_realtime(bool enable);
int32_t ctdb_control_takeover_ip(struct ctdb_context *ctdb,
struct ctdb_req_control *c,
TDB_DATA indata,