[systemd-commits] src/core TODO

Tom Gundersen tomegun at kemper.freedesktop.org
Wed May 14 03:45:18 PDT 2014


 TODO               |    4 ----
 src/core/service.c |    8 ++++++--
 2 files changed, 6 insertions(+), 6 deletions(-)

New commits:
commit 0404c609f399b2092a3de52eef9d75b0dc12e94c
Author: Tom Gundersen <teg at jklm.no>
Date:   Mon May 12 21:26:54 2014 +0200

    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 at redhat.com>
    Cc: Michal Sekletar <msekleta at redhat.com>

diff --git a/TODO b/TODO
index 50d3f79..3154fbd 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 694a265..4b6220e 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",



More information about the systemd-commits mailing list