[systemd-commits] 2 commits - fixme Makefile.am man/systemd.service.xml src/sd-daemon.c src/sd-daemon.h src/sd-readahead.c src/sd-readahead.h src/service.c src/service.h units/emergency.service units/fedora units/getty at .service.m4 units/serial-getty at .service.m4

Lennart Poettering lennart at kemper.freedesktop.org
Tue Oct 5 11:30:57 PDT 2010


 Makefile.am                    |    8 +++-
 fixme                          |    2 +
 man/systemd.service.xml        |   12 +++---
 src/sd-daemon.c                |   38 -------------------
 src/sd-daemon.h                |   14 ++-----
 src/sd-readahead.c             |   76 ++++++++++++++++++++++++++++++++++++++
 src/sd-readahead.h             |   81 +++++++++++++++++++++++++++++++++++++++++
 src/service.c                  |    8 ++--
 src/service.h                  |    2 -
 units/emergency.service        |    2 -
 units/fedora/prefdm.service    |    2 -
 units/fedora/single.service    |    2 -
 units/getty at .service.m4        |    2 -
 units/serial-getty at .service.m4 |    2 -
 14 files changed, 185 insertions(+), 66 deletions(-)

New commits:
commit 525ee6f4a1639bcb28198bf9e32b93ca2bfd268b
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Oct 5 20:30:44 2010 +0200

    service: rename settings for Restart= from 'restart-always' to 'always' and similar

diff --git a/fixme b/fixme
index 24fb169..fd75631 100644
--- a/fixme
+++ b/fixme
@@ -107,6 +107,8 @@ later:
 
 * enable syslog.socket by default, activating our kmsg bridge
 
+* Restart=on-failure and Restart=on-abort
+
 External:
 
 * place /etc/inittab with explaining blurb.
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index 6ab3bc3..d573ec6 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -428,17 +428,17 @@
                                 <listitem><para>Configures whether the
                                 main service process shall be restarted when
                                 it exists. Takes one of
-                                <option>once</option>,
-                                <option>restart-on-success</option> or
-                                <option>restart-always</option>. If
-                                set to <option>once</option> (the
+                                <option>no</option>,
+                                <option>on-success</option> or
+                                <option>always</option>. If
+                                set to <option>no</option> (the
                                 default) the service will not be
                                 restarted when it exits. If set to
-                                <option>restart-on-success</option> it
+                                <option>on-success</option> it
                                 will be restarted only when it exited
                                 cleanly, i.e. terminated with an exit
                                 code of 0. If set to
-                                <option>restart-always</option> the
+                                <option>always</option> the
                                 service will be restarted regardless
                                 whether it exited cleanly or not, or
                                 got terminated abnormally by a
diff --git a/src/service.c b/src/service.c
index 301633e..116e539 100644
--- a/src/service.c
+++ b/src/service.c
@@ -795,7 +795,7 @@ static int service_load_sysv_path(Service *s, const char *path) {
         /* Special setting for all SysV services */
         s->type = SERVICE_FORKING;
         s->remain_after_exit = true;
-        s->restart = SERVICE_ONCE;
+        s->restart = SERVICE_RESTART_NO;
         s->exec_context.std_output =
                 (s->meta.manager->sysv_console || s->exec_context.std_input == EXEC_INPUT_TTY)
                 ? EXEC_OUTPUT_TTY : EXEC_OUTPUT_NULL;
@@ -3109,9 +3109,9 @@ static const char* const service_state_table[_SERVICE_STATE_MAX] = {
 DEFINE_STRING_TABLE_LOOKUP(service_state, ServiceState);
 
 static const char* const service_restart_table[_SERVICE_RESTART_MAX] = {
-        [SERVICE_ONCE] = "once",
-        [SERVICE_RESTART_ON_SUCCESS] = "restart-on-success",
-        [SERVICE_RESTART_ALWAYS] = "restart-always",
+        [SERVICE_RESTART_NO] = "no",
+        [SERVICE_RESTART_ON_SUCCESS] = "on-success",
+        [SERVICE_RESTART_ALWAYS] = "always",
 };
 
 DEFINE_STRING_TABLE_LOOKUP(service_restart, ServiceRestart);
diff --git a/src/service.h b/src/service.h
index e2b11db..f473467 100644
--- a/src/service.h
+++ b/src/service.h
@@ -48,7 +48,7 @@ typedef enum ServiceState {
 } ServiceState;
 
 typedef enum ServiceRestart {
-        SERVICE_ONCE,
+        SERVICE_RESTART_NO,
         SERVICE_RESTART_ON_SUCCESS,
         SERVICE_RESTART_ALWAYS,
         _SERVICE_RESTART_MAX,
diff --git a/units/emergency.service b/units/emergency.service
index 8e37848..8578654 100644
--- a/units/emergency.service
+++ b/units/emergency.service
@@ -18,7 +18,7 @@ ExecStartPre=-/bin/plymouth --hide-splash
 ExecStartPre=-/bin/echo 'Welcome to emergency mode. Use "systemctl default" to activate default mode.'
 ExecStart=-/sbin/sulogin
 StandardInput=tty-force
-Restart=restart-always
+Restart=always
 RestartSec=0
 KillMode=process-group
 
diff --git a/units/fedora/prefdm.service b/units/fedora/prefdm.service
index efb83fe..32ceb9a 100644
--- a/units/fedora/prefdm.service
+++ b/units/fedora/prefdm.service
@@ -16,7 +16,7 @@ After=getty at tty1.service plymouth-quit.service
 
 [Service]
 ExecStart=/etc/X11/prefdm -nodaemon
-Restart=restart-always
+Restart=always
 RestartSec=0
 
 [Install]
diff --git a/units/fedora/single.service b/units/fedora/single.service
index 6afc8b3..a519ae3 100644
--- a/units/fedora/single.service
+++ b/units/fedora/single.service
@@ -21,7 +21,7 @@ ExecStartPre=-/bin/plymouth --hide-splash
 ExecStartPre=-/bin/echo 'Welcome to rescue mode. Use "systemctl default" to activate default mode.'
 ExecStart=-/sbin/sulogin
 StandardInput=tty-force
-Restart=restart-always
+Restart=always
 RestartSec=0
 KillMode=process-group
 
diff --git a/units/getty at .service.m4 b/units/getty at .service.m4
index 4b65d5b..8df77c7 100644
--- a/units/getty at .service.m4
+++ b/units/getty at .service.m4
@@ -31,7 +31,7 @@ Before=getty.target
 [Service]
 Environment=TERM=linux
 ExecStart=-GETTY %I
-Restart=restart-always
+Restart=always
 RestartSec=0
 KillMode=process-group
 
diff --git a/units/serial-getty at .service.m4 b/units/serial-getty at .service.m4
index b91ed98..baf2eca 100644
--- a/units/serial-getty at .service.m4
+++ b/units/serial-getty at .service.m4
@@ -28,7 +28,7 @@ m4_ifdef(`TARGET_FEDORA',
 ExecStartPre=-/sbin/securetty %I
 )m4_dnl
 ExecStart=-/sbin/agetty -s %I 115200,38400,9600
-Restart=restart-always
+Restart=always
 RestartSec=0
 KillMode=process-group
 
commit d0b4880988c5900c0f951aa6fe700686411cd03e
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Oct 5 20:20:38 2010 +0200

    sd-daemon: split off sd_readahead() since it is not a feature of systemd itself but of an auxiliary tool

diff --git a/Makefile.am b/Makefile.am
index 0a33c06..11abadf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -310,7 +310,9 @@ dist_doc_DATA = \
 	LICENSE \
 	DISTRO_PORTING \
 	src/sd-daemon.h \
-	src/sd-daemon.c
+	src/sd-daemon.c \
+	src/sd-readahead.h \
+	src/sd-readahead.c
 
 pkgconfigdata_DATA = \
 	systemd.pc
@@ -419,6 +421,7 @@ EXTRA_DIST += \
 	src/linux/fanotify.h \
 	src/initreq.h \
 	src/sd-daemon.h \
+	src/sd-readahead.h \
 	src/special.h \
 	src/dbus-common.h \
 	src/bus-errors.h \
@@ -708,7 +711,8 @@ systemctl_LDADD = \
 
 systemd_notify_SOURCES = \
 	src/notify.c \
-	src/sd-daemon.c
+	src/sd-daemon.c \
+	src/sd-readahead.c
 
 systemd_notify_LDADD = \
 	libsystemd-basic.la
diff --git a/src/sd-daemon.c b/src/sd-daemon.c
index 316fccc..9c23b91 100644
--- a/src/sd-daemon.c
+++ b/src/sd-daemon.c
@@ -433,41 +433,3 @@ int sd_booted(void) {
         return a.st_dev != b.st_dev;
 #endif
 }
-
-static int touch(const char *path) {
-
-#if !defined(DISABLE_SYSTEMD) && defined(__linux__)
-        int fd;
-
-        mkdir("/dev/.systemd", 0755);
-        mkdir("/dev/.systemd/readahead", 0755);
-
-        if ((fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666)) < 0)
-                return -errno;
-
-        for (;;) {
-                if (close(fd) >= 0)
-                        break;
-
-                if (errno != -EINTR)
-                        return -errno;
-        }
-
-#endif
-        return 0;
-}
-
-int sd_readahead(const char *action) {
-
-        if (!action)
-                return -EINVAL;
-
-        if (strcmp(action, "cancel") == 0)
-                return touch("/dev/.systemd/readahead/cancel");
-        else if (strcmp(action, "done") == 0)
-                return touch("/dev/.systemd/readahead/done");
-        else if (strcmp(action, "noreplay") == 0)
-                return touch("/dev/.systemd/readahead/noreplay");
-
-        return -EINVAL;
-}
diff --git a/src/sd-daemon.h b/src/sd-daemon.h
index 2fbfe95..fdf3cc0 100644
--- a/src/sd-daemon.h
+++ b/src/sd-daemon.h
@@ -67,17 +67,21 @@ extern "C" {
   See sd-daemon(7) for more information.
 */
 
+#ifndef _sd_printf_attr_
 #if __GNUC__ >= 4
 #define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b)))
 #else
 #define _sd_printf_attr_(a,b)
 #endif
+#endif
 
+#ifndef _sd_hidden_
 #if (__GNUC__ >= 4) && !defined(SD_EXPORT_SYMBOLS)
 #define _sd_hidden_ __attribute__ ((visibility("hidden")))
 #else
 #define _sd_hidden_
 #endif
+#endif
 
 /*
   Log levels for usage on stderr:
@@ -254,16 +258,6 @@ int sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(
 */
 int sd_booted(void) _sd_hidden_;
 
-/*
-  Controls ongoing disk read-ahead operations during boot-up. The argument
-  must be a string, and either "cancel", "done" or "noreplay".
-
-  cancel = terminate read-ahead data collection, drop collected information
-  done = terminate read-ahead data collection, keep collected information
-  noreplay = terminate read-ahead replay
-*/
-int sd_readahead(const char *action);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/sd-readahead.c b/src/sd-readahead.c
new file mode 100644
index 0000000..41e6d3d
--- /dev/null
+++ b/src/sd-readahead.c
@@ -0,0 +1,76 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  Copyright 2010 Lennart Poettering
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+***/
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <string.h>
+
+#include "sd-readahead.h"
+
+static int touch(const char *path) {
+
+#if !defined(DISABLE_SYSTEMD) && defined(__linux__)
+        int fd;
+
+        mkdir("/dev/.systemd", 0755);
+        mkdir("/dev/.systemd/readahead", 0755);
+
+        if ((fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666)) < 0)
+                return -errno;
+
+        for (;;) {
+                if (close(fd) >= 0)
+                        break;
+
+                if (errno != -EINTR)
+                        return -errno;
+        }
+
+#endif
+        return 0;
+}
+
+int sd_readahead(const char *action) {
+
+        if (!action)
+                return -EINVAL;
+
+        if (strcmp(action, "cancel") == 0)
+                return touch("/dev/.systemd/readahead/cancel");
+        else if (strcmp(action, "done") == 0)
+                return touch("/dev/.systemd/readahead/done");
+        else if (strcmp(action, "noreplay") == 0)
+                return touch("/dev/.systemd/readahead/noreplay");
+
+        return -EINVAL;
+}
diff --git a/src/sd-readahead.h b/src/sd-readahead.h
new file mode 100644
index 0000000..5bf975a
--- /dev/null
+++ b/src/sd-readahead.h
@@ -0,0 +1,81 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#ifndef foosdreadaheadhfoo
+#define foosdreadaheadhfoo
+
+/***
+  Copyright 2010 Lennart Poettering
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+***/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+  Reference implementation of a few boot readahead related
+  interfaces. These interfaces are trivial to implement. To simplify
+  porting we provide this reference implementation.  Applications are
+  welcome to reimplement the algorithms described here if they do not
+  want to include these two source files.
+
+  You may compile this with -DDISABLE_SYSTEMD to disable systemd
+  support. This makes all calls NOPs.
+
+  Since this is drop-in code we don't want any of our symbols to be
+  exported in any case. Hence we declare hidden visibility for all of
+  them.
+
+  You may find an up-to-date version of these source files online:
+
+  http://cgit.freedesktop.org/systemd/plain/src/sd-readahead.h
+  http://cgit.freedesktop.org/systemd/plain/src/sd-readahead.c
+
+  This should compile on non-Linux systems, too, but all functions
+  will become NOPs.
+
+  See sd-readahead(7) for more information.
+*/
+
+#ifndef _sd_hidden_
+#if (__GNUC__ >= 4) && !defined(SD_EXPORT_SYMBOLS)
+#define _sd_hidden_ __attribute__ ((visibility("hidden")))
+#else
+#define _sd_hidden_
+#endif
+#endif
+
+/*
+  Controls ongoing disk read-ahead operations during boot-up. The argument
+  must be a string, and either "cancel", "done" or "noreplay".
+
+  cancel = terminate read-ahead data collection, drop collected information
+  done = terminate read-ahead data collection, keep collected information
+  noreplay = terminate read-ahead replay
+*/
+int sd_readahead(const char *action) _sd_hidden_;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif


More information about the systemd-commits mailing list