summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-05-12 21:26:54 +0200
committerTom Gundersen <teg@jklm.no>2014-05-14 12:45:12 +0200
commit0404c609f399b2092a3de52eef9d75b0dc12e94c (patch)
treedc1505515f22d73201084eba8f3cd4c7d37e36f4
parente0dd92729e68e0005866a890d8209ddcf3568805 (diff)
core: sysvcompat - $network should be equivalent to network-online, rather than network target
Most likely the facility needed is actual connectivity, rather than whether or not the network managment daemon is running. We also need to explicitly pull in the network-online.target, as it is not active by default. This means {systemd-networkd,NetworkManager}-wait-online.service, can be enabled by default as part of network-online.target, and only delay boot when some service actively pulls it in. See: <https://bugzilla.gnome.org/show_bug.cgi?id=728965> Cc: Pavel Šimerda <psimerda@redhat.com> Cc: Michal Sekletar <msekleta@redhat.com>
-rw-r--r--TODO4
-rw-r--r--src/core/service.c8
2 files changed, 6 insertions, 6 deletions
diff --git a/TODO b/TODO
index 50d3f796a..3154fbd16 100644
--- a/TODO
+++ b/TODO
@@ -705,10 +705,6 @@ Features:
External:
-* NM: figure out what to do about network-online.target.
- - maybe pull in the target as dependency for LSB initscripts ordered now after network.target
- - https://bugzilla.gnome.org/show_bug.cgi?id=728965
-
* dbus:
- natively watch for dbus-*.service symlinks (PENDING)
- teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
diff --git a/src/core/service.c b/src/core/service.c
index 694a2658e..4b6220e34 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -392,7 +392,7 @@ static int sysv_translate_facility(const char *name, const char *filename, char
static const char * const table[] = {
/* LSB defined facilities */
"local_fs", NULL,
- "network", SPECIAL_NETWORK_TARGET,
+ "network", SPECIAL_NETWORK_ONLINE_TARGET,
"named", SPECIAL_NSS_LOOKUP_TARGET,
"portmap", SPECIAL_RPCBIND_TARGET,
"remote_fs", SPECIAL_REMOTE_FS_TARGET,
@@ -854,7 +854,11 @@ static int service_load_sysv_path(Service *s, const char *path) {
if (r == 0)
continue;
- r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
+ if (streq(m, SPECIAL_NETWORK_ONLINE_TARGET) && !startswith_no_case(t, "X-Start-Before:"))
+ /* the network-online target is special, as it needs to be actively pulled in */
+ r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_WANTS, m, NULL, true);
+ else
+ r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
if (r < 0)
log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s",