[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