]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Configurable Timeouts/Restarts default values
authorOleksii Shevchuk <alxchk@gmail.com>
Mon, 4 Nov 2013 16:47:43 +0000 (18:47 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 5 Nov 2013 18:57:22 +0000 (19:57 +0100)
https://bugs.freedesktop.org/show_bug.cgi?id=71132

Patch adds DefaultTimeoutStartSec, DefaultTimeoutStopSec, DefaultRestartSec
configuration options to manager configuration file.

15 files changed:
man/systemd-system.conf.xml
man/systemd.mount.xml
man/systemd.service.xml
man/systemd.socket.xml
man/systemd.swap.xml
src/core/device.c
src/core/main.c
src/core/manager.h
src/core/mount.c
src/core/scope.c
src/core/service.c
src/core/socket.c
src/core/swap.c
src/core/system.conf
src/core/user.conf

index e8cf8a9cb24f60636068167284bdbce0c399cb38..c1f26484eecc56fba42e44d1af4c63c0ea42362e 100644 (file)
@@ -61,7 +61,6 @@
                 otherwise <filename>user.conf</filename>. These
                 configuration files contain a few settings controlling
                 basic manager operations.</para>
-
         </refsect1>
 
         <refsect1>
                                 arguments.</para></listitem>
                         </varlistentry>
 
+                        <varlistentry>
+                                <term><varname>DefaultTimeoutStartSec=</varname></term>
+                                <term><varname>DefaultTimeoutStopSec=</varname></term>
+                                <term><varname>DefaultRestartSec=</varname></term>
+
+                                <listitem><para>Configures the default
+                                time-outs for starting and stopping of
+                                units, as well as the default time to
+                                sleep between automatic restarts of a
+                                units, as configured per-unit in
+                                <varname>TimeoutStartSec=</varname>,
+                                <varname>TimeoutStopSec=</varname> and
+                                <varname>RestartSec=</varname> (for
+                                service units see
+                                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                                for details on the per-unit
+                                settings). For non-service units
+                                <varname>DefaultTimeoutStartSec=</varname>
+                                sets the default
+                                <varname>TimeoutSec=</varname> value.
+                                </para></listitem>
+                        </varlistentry>
+
                         <varlistentry>
                                 <term><varname>CPUAffinity=</varname></term>
 
index 217289ab75f8a214a9261db359e6e3af4439e70b..bed2975509e10ea5c308e55f2e2a8fd798515700 100644 (file)
                                 Takes a unit-less value in seconds, or
                                 a time span value such as "5min
                                 20s". Pass 0 to disable the timeout
-                                logic. Defaults to
-                                90s.</para></listitem>
+                                logic. Default value is setted up in manager configuration
+                                file via <term><varname>DefaultTimeoutStart=</varname></term>.</para></listitem>
                         </varlistentry>
                 </variablelist>
 
index b1e3af2fefa485aead9214ad94c052c2fccc9b52..0cb3d9e351415bca7e50134d417a00633b3a3a47 100644 (file)
                                 Takes a unit-less value in seconds, or a
                                 time span value such as "5min
                                 20s". Pass 0 to disable the timeout
-                                logic. Defaults to 90s, except when
+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
+                                manager configuration file, except when
                                 <varname>Type=oneshot</varname> is
                                 used in which case the timeout
                                 is disabled by default.
                                 Takes a unit-less value in seconds, or a
                                 time span value such as "5min
                                 20s". Pass 0 to disable the timeout
-                                logic. Defaults to 90s.
+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
+                                manager configuration file.
                                 </para></listitem>
                         </varlistentry>
 
index 8c88d9f8aa37defa70ccc9e796fe8aa9bb8f8e15..1c78562e8ad4cf8ceb733f2a86341d4458817d98 100644 (file)
                                 Takes a unit-less value in seconds, or
                                 a time span value such as "5min
                                 20s". Pass 0 to disable the timeout
-                                logic. Defaults to
-                                90s.</para></listitem>
+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
+                                manager configuration file.</para></listitem>
                         </varlistentry>
 
                         <varlistentry>
index 813ae6c9427836826bb7fed5195ae4256fa6371d..13f6c8441a22c171b14a258f2f8d24e1de7a90fd 100644 (file)
                                 Takes a unit-less value in seconds, or
                                 a time span value such as "5min
                                 20s". Pass 0 to disable the timeout
-                                logic. Defaults to
-                                90s.</para></listitem>
+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
+                                manager configuration file.</para></listitem>
                         </varlistentry>
                 </variablelist>
 
index 05950153d3c531a70ec335278f40da18ca76d630..6fc4c95ea0388e1bee3e4806618489b33326dd19 100644 (file)
@@ -70,7 +70,7 @@ static void device_init(Unit *u) {
          * indefinitely for plugged in devices, something which cannot
          * happen for the other units since their operations time out
          * anyway. */
-        UNIT(d)->job_timeout = DEFAULT_TIMEOUT_USEC;
+        UNIT(d)->job_timeout = u->manager->default_timeout_start_usec;
 
         UNIT(d)->ignore_on_isolate = true;
         UNIT(d)->ignore_on_snapshot = true;
index 5d30893bf485292b3e7cdc6091583d6739bf0a47..b21fb493da5db9006a05c0372aca381747749809 100644 (file)
@@ -90,6 +90,9 @@ static bool arg_switched_root = false;
 static char ***arg_join_controllers = NULL;
 static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL;
 static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
+static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC;
+static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
+static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
 static usec_t arg_runtime_watchdog = 0;
 static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE;
 static char **arg_default_environment = NULL;
@@ -636,6 +639,9 @@ static int parse_config_file(void) {
                 { "Manager", "CPUAffinity",           config_parse_cpu_affinity2, 0, NULL                    },
                 { "Manager", "DefaultStandardOutput", config_parse_output,       0, &arg_default_std_output  },
                 { "Manager", "DefaultStandardError",  config_parse_output,       0, &arg_default_std_error   },
+                { "Manager", "DefaultTimeoutStartSec", config_parse_sec,         0, &arg_default_timeout_start_usec },
+                { "Manager", "DefaultTimeoutStopSec", config_parse_sec,          0, &arg_default_timeout_stop_usec  },
+                { "Manager", "DefaultRestartSec",     config_parse_sec,          0, &arg_default_restart_usec  },
                 { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
                 { "Manager", "RuntimeWatchdogSec",    config_parse_sec,          0, &arg_runtime_watchdog    },
                 { "Manager", "ShutdownWatchdogSec",   config_parse_sec,          0, &arg_shutdown_watchdog   },
@@ -1518,6 +1524,9 @@ int main(int argc, char *argv[]) {
         m->confirm_spawn = arg_confirm_spawn;
         m->default_std_output = arg_default_std_output;
         m->default_std_error = arg_default_std_error;
+        m->default_restart_usec = arg_default_restart_usec;
+        m->default_timeout_start_usec = arg_default_timeout_start_usec;
+        m->default_timeout_stop_usec = arg_default_timeout_stop_usec;
         m->runtime_watchdog = arg_runtime_watchdog;
         m->shutdown_watchdog = arg_shutdown_watchdog;
         m->userspace_timestamp = userspace_timestamp;
index ffcca48a3d0df0e8cf47962c54a7cd7adaad5c16..c704d0e80ad9c4165375f6e00eee58b6745fa405 100644 (file)
@@ -230,6 +230,9 @@ struct Manager {
 
         ExecOutput default_std_output, default_std_error;
 
+        usec_t default_restart_usec, default_timeout_start_usec,
+                default_timeout_stop_usec;
+
         struct rlimit *rlimit[RLIMIT_NLIMITS];
 
         /* non-zero if we are reloading or reexecuting, */
index 88563b34f6d02a5d2bfb690759fd5ca5e9259660..0c15b99f945e85a83aa42ee86acfb0062d9ed6b3 100644 (file)
@@ -131,7 +131,7 @@ static void mount_init(Unit *u) {
         assert(u);
         assert(u->load_state == UNIT_STUB);
 
-        m->timeout_usec = DEFAULT_TIMEOUT_USEC;
+        m->timeout_usec = u->manager->default_timeout_start_usec;
         m->directory_mode = 0755;
 
         exec_context_init(&m->exec_context);
index 50e5dbacb4d7fa3936b27d7732cb5341b3b42948..41da3b9378dc2f083fa8d5bf119aadfd783ef826 100644 (file)
@@ -46,7 +46,7 @@ static void scope_init(Unit *u) {
         assert(u);
         assert(u->load_state == UNIT_STUB);
 
-        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
+        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
 
         watch_init(&s->timer_watch);
 
index ce757570219d5201df63d1a2850b809eb785b282..d11de79a50de2f4024ce22eaf307c32ca66c1a08 100644 (file)
@@ -124,9 +124,9 @@ static void service_init(Unit *u) {
         assert(u);
         assert(u->load_state == UNIT_STUB);
 
-        s->timeout_start_usec = DEFAULT_TIMEOUT_USEC;
-        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
-        s->restart_usec = DEFAULT_RESTART_USEC;
+        s->timeout_start_usec = u->manager->default_timeout_start_usec;
+        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
+        s->restart_usec = u->manager->default_restart_usec;
         s->type = _SERVICE_TYPE_INVALID;
 
         watch_init(&s->watchdog_watch);
index 0c03e8381826d88f83a6d380ed666b8449498e1d..887ea00fb2710d7ca18a57d46cbc1de6e1c32c60 100644 (file)
@@ -74,7 +74,7 @@ static void socket_init(Unit *u) {
         assert(u->load_state == UNIT_STUB);
 
         s->backlog = SOMAXCONN;
-        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
+        s->timeout_usec = u->manager->default_timeout_start_usec;
         s->directory_mode = 0755;
         s->socket_mode = 0666;
 
index 8e494e9b5a194f2f84a43d3567afae05a4e0e68f..c48c0bd5f963551cf72c4072b46fc76fce3d5ccc 100644 (file)
@@ -86,7 +86,7 @@ static void swap_init(Unit *u) {
         assert(s);
         assert(UNIT(s)->load_state == UNIT_STUB);
 
-        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
+        s->timeout_usec = u->manager->default_timeout_start_usec;
 
         exec_context_init(&s->exec_context);
         s->exec_context.std_output = u->manager->default_std_output;
index 7b03c8782bcf35a094da40330afc97039729accc..3c6cc0349bff4a8710fabfb42f72a859ab218b1f 100644 (file)
@@ -24,6 +24,9 @@
 #ShutdownWatchdogSec=10min
 #CapabilityBoundingSet=
 #TimerSlackNSec=
+#DefaultTimeoutStartSec=90s
+#DefaultTimeoutStopSec=90s
+#DefaultRestartSec=100ms
 #DefaultEnvironment=
 #DefaultLimitCPU=
 #DefaultLimitFSIZE=
index 4a0129a98484740d6f98aa5704abf36b3f6706eb..b030701840cbcc2b3aeb44eb213994b3286e1c9f 100644 (file)
@@ -14,3 +14,6 @@
 #LogLocation=no
 #DefaultStandardOutput=inherit
 #DefaultStandardError=inherit
+#DefaultTimeoutStartSec=90s
+#DefaultTimeoutStopSec=90s
+#DefaultRestartSec=100ms