ctdb-common: Use SCHED_RESET_ON_FORK when setting SCHED_FIFO
authorMartin Schwenke <martin@meltin.net>
Sat, 31 May 2014 04:01:53 +0000 (14:01 +1000)
committerAmitay Isaacs <amitay@samba.org>
Mon, 7 Jul 2014 11:28:25 +0000 (13:28 +0200)
This makes the scheduler reset code a no-op.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Mon Jul  7 13:28:25 CEST 2014 on sn-devel-104

ctdb/common/system_util.c

index 6a5f454f8f07e0087846e3de2d6d9c376e5be606..fe0f403f483c4fafcd623ba520e0030387a732f2 100644 (file)
@@ -59,10 +59,14 @@ void set_scheduler(void)
 #else /* no AIX */
 #if HAVE_SCHED_SETSCHEDULER
        struct sched_param p;
+       int policy = SCHED_FIFO;
 
        p.sched_priority = 1;
 
-       if (sched_setscheduler(0, SCHED_FIFO, &p) == -1) {
+#ifdef SCHED_RESET_ON_FORK
+       policy |= SCHED_RESET_ON_FORK;
+#endif
+       if (sched_setscheduler(0, policy, &p) == -1) {
                DEBUG(DEBUG_CRIT,("Unable to set scheduler to SCHED_FIFO (%s)\n",
                         strerror(errno)));
        } else {
@@ -92,6 +96,7 @@ void reset_scheduler(void)
 #endif
 #else /* no AIX */
 #if HAVE_SCHED_SETSCHEDULER
+#ifndef SCHED_RESET_ON_FORK
        struct sched_param p;
 
        p.sched_priority = 0;
@@ -100,6 +105,7 @@ void reset_scheduler(void)
        }
 #endif
 #endif
+#endif
 }
 
 void set_nonblocking(int fd)