}
block_signal(SIGPIPE);
- /* try to set us up as realtime */
- ctdb_set_realtime(true);
+ if (ctdb->do_setsched) {
+ /* try to set us up as 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);
const char *logfile;
const char *recovery_lock_file;
const char *db_dir;
+ int no_setsched;
} options = {
.nlist = ETCDIR "/ctdb/nodes",
.transport = "tcp",
{ "transport", 0, POPT_ARG_STRING, &options.transport, 0, "protocol transport", NULL },
{ "dbdir", 0, POPT_ARG_STRING, &options.db_dir, 0, "directory for the tdb files", NULL },
{ "reclock", 0, POPT_ARG_STRING, &options.recovery_lock_file, 0, "location of recovery lock file", "filename" },
+ { "nosetsched", 0, POPT_ARG_NONE, &options.no_setsched, 0, "disable setscheduler SCHED_FIFO call", NULL },
POPT_TABLEEND
};
int opt, ret;
talloc_free(name);
}
+ ctdb->do_setsched = !!options.no_setsched;
+
/* start the protocol running (as a child) */
return ctdb_start_daemon(ctdb, interactive?False:True);
}
if (state->child == 0) {
close(state->fd[0]);
- ctdb_set_realtime(false);
+ if (ctdb->do_setsched) {
+ ctdb_set_realtime(false);
+ }
set_close_on_exec(state->fd[1]);
va_start(ap, fmt);
ret = ctdb_event_script_v(ctdb, fmt, ap);