[systemd-commits] man/systemd.service.xml src/core

Lennart Poettering lennart at kemper.freedesktop.org
Thu Sep 12 09:31:43 PDT 2013


 man/systemd.service.xml |    5 +++++
 src/core/service.c      |    2 ++
 src/core/service.h      |    1 +
 3 files changed, 8 insertions(+)

New commits:
commit dc99a9764418a1974c46c55efa73b034f530a5a5
Author: Hannes Reinecke <hare at suse.de>
Date:   Thu Jul 25 14:07:59 2013 +0200

    service: Implement 'on-watchdog' restart option
    
    Services using the watchdog option might want to be restarted
    only if the watchdog triggers.

diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index a15dfb2..1eb5f39 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -618,6 +618,7 @@
                                 <option>no</option>,
                                 <option>on-success</option>,
                                 <option>on-failure</option>,
+                                <option>on-watchdog</option>,
                                 <option>on-abort</option>, or
                                 <option>always</option>. If set to
                                 <option>no</option> (the default) the
@@ -644,6 +645,10 @@
                                 signal not specified as a clean exit
                                 status.
                                 If set to
+                                <option>on-watchdog</option> the service
+                                will be restarted only if the watchdog
+                                timeout for the service expires.
+                                If set to
                                 <option>always</option> the service
                                 will be restarted regardless whether
                                 it exited cleanly or not, got
diff --git a/src/core/service.c b/src/core/service.c
index 34dde79..08b929e 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1937,6 +1937,7 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart)
             (s->restart == SERVICE_RESTART_ALWAYS ||
              (s->restart == SERVICE_RESTART_ON_SUCCESS && s->result == SERVICE_SUCCESS) ||
              (s->restart == SERVICE_RESTART_ON_FAILURE && s->result != SERVICE_SUCCESS) ||
+             (s->restart == SERVICE_RESTART_ON_WATCHDOG && s->result == SERVICE_FAILURE_WATCHDOG) ||
              (s->restart == SERVICE_RESTART_ON_ABORT && (s->result == SERVICE_FAILURE_SIGNAL ||
                                                          s->result == SERVICE_FAILURE_CORE_DUMP))) &&
             (s->result != SERVICE_FAILURE_EXIT_CODE ||
@@ -3791,6 +3792,7 @@ static const char* const service_restart_table[_SERVICE_RESTART_MAX] = {
         [SERVICE_RESTART_NO] = "no",
         [SERVICE_RESTART_ON_SUCCESS] = "on-success",
         [SERVICE_RESTART_ON_FAILURE] = "on-failure",
+        [SERVICE_RESTART_ON_WATCHDOG] = "on-watchdog",
         [SERVICE_RESTART_ON_ABORT] = "on-abort",
         [SERVICE_RESTART_ALWAYS] = "always"
 };
diff --git a/src/core/service.h b/src/core/service.h
index 182cba1..ce5b5e0 100644
--- a/src/core/service.h
+++ b/src/core/service.h
@@ -54,6 +54,7 @@ typedef enum ServiceRestart {
         SERVICE_RESTART_NO,
         SERVICE_RESTART_ON_SUCCESS,
         SERVICE_RESTART_ON_FAILURE,
+        SERVICE_RESTART_ON_WATCHDOG,
         SERVICE_RESTART_ON_ABORT,
         SERVICE_RESTART_ALWAYS,
         _SERVICE_RESTART_MAX,



More information about the systemd-commits mailing list