From 6620bceb7233a830be3635a4f7a7dc75c13a9c8e Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Fri, 30 Sep 2011 14:12:45 +0200 Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf --- src/service.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) Index: systemd-40/src/service.c =================================================================== --- systemd-40.orig/src/service.c +++ systemd-40/src/service.c @@ -3162,23 +3162,32 @@ static void sysv_facility_in_insserv_con Unit *u; if (sysv_translate_facility(parsed[0], NULL, &facility) < 0) continue; + if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) { + /* insert also a Wants dependency from remote-fs-pre on remote-fs */ + u = manager_get_unit(mgr, SPECIAL_REMOTE_FS_TARGET); + unit_add_dependency_by_name(u, UNIT_WANTS, + SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true); + free (facility); + facility=strdup(SPECIAL_REMOTE_FS_PRE_TARGET); + } + if ((u = manager_get_unit(mgr, facility)) && (u->type == UNIT_TARGET)) { - UnitDependency e; char *dep = NULL, *name, **j; STRV_FOREACH (j, parsed+1) { - if (*j[0]=='+') { - e = UNIT_WANTS; + if (*j[0]=='+') name = *j+1; - } - else { - e = UNIT_REQUIRES; + else name = *j; - } + if (streq(name, "boot.localfs") || + streq(name, "boot.crypto")) + continue; if (sysv_translate_facility(name, NULL, &dep) < 0) continue; - r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, e, dep, NULL, true); + r = unit_add_dependency_by_name_inverse(u, UNIT_BEFORE, dep, NULL, true); + if (*j[0]!='+') + r = unit_add_dependency_by_name(u, UNIT_REQUIRES, dep, NULL, true); free(dep); } }