]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
disable realtime scheduler in event scripts
authorAndrew Tridgell <tridge@samba.org>
Fri, 1 Jun 2007 22:46:49 +0000 (08:46 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 1 Jun 2007 22:46:49 +0000 (08:46 +1000)
(This used to be ctdb commit 56225ac6fdfe754289bc7d5e0fc8d21c81a7aa8e)

ctdb/common/ctdb_daemon.c
ctdb/common/ctdb_util.c
ctdb/include/ctdb_private.h
ctdb/takeover/system.c

index 3309d375e48778b752e8595317c27a4a3df0cc4b..ecd095f115f079e355bd568d09a226b27a8e4f33 100644 (file)
@@ -766,7 +766,7 @@ int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork)
        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);
index ad00428c02c1fd9c8d3583f037fe34765b290334..3fbf9882e1c840ff2aec6e5b98cfe9e9417c6f92 100644 (file)
@@ -204,16 +204,20 @@ struct ctdb_rec_data *ctdb_marshall_record(TALLOC_CTX *mem_ctx, uint32_t reqid,
 /*
   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
 }
index 5bc9a60fd648730246ed922262f68be6236fd362..d366c5071d86b97d19cd3aef9ea1a8460f8eb66e 100644 (file)
@@ -928,7 +928,7 @@ int ctdb_ctrl_set_rsn_nonempty(struct ctdb_context *ctdb, struct timeval timeout
                               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, 
index 95c790fc1a057dd70aa2030a7c2dda42847ce49b..a628f5b29563d39475f6f746df5014e2d0c7077d 100644 (file)
@@ -385,6 +385,7 @@ int ctdb_event_script_callback(struct ctdb_context *ctdb,
 
        if (state->child == 0) {
                close(state->fd[0]);
+               ctdb_set_realtime(false);
                va_start(ap, fmt);
                ret = ctdb_event_script_v(ctdb, fmt, ap);
                va_end(ap);