X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Funit.c;h=875befa0a200e5ce83771316be36c8561009e8be;hb=5bd4b173605142c7be493aa4d958ebaef21f421d;hp=2f95737da00a8a41d7101580c04b355c1519776b;hpb=63c372cb9df3bee01e3bf8cd7f96f336bddda846;p=elogind.git diff --git a/src/core/unit.c b/src/core/unit.c index 2f95737da..875befa0a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -19,12 +19,8 @@ along with systemd; If not, see . ***/ -#include #include #include -#include -#include -#include #include #include #include @@ -45,12 +41,10 @@ #include "cgroup-util.h" #include "missing.h" #include "mkdir.h" -#include "label.h" #include "fileio-label.h" #include "bus-common-errors.h" #include "dbus.h" #include "execute.h" -#include "virt.h" #include "dropin.h" const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = { @@ -1653,7 +1647,7 @@ static void unit_check_binds_to(Unit *u) { if (!stop) return; - log_unit_info(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id); + log_unit_info(u->id, "Unit %s is bound to inactive unit. Stopping, too.", u->id); /* A unit we need to run is gone. Sniff. Let's stop this. */ manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL); @@ -2845,7 +2839,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) { if (r < 0) return r; - r = unit_add_two_dependencies(u, UNIT_AFTER, UNIT_BINDS_TO, device, true); + r = unit_add_two_dependencies(u, UNIT_AFTER, u->manager->running_as == SYSTEMD_SYSTEM ? UNIT_BINDS_TO : UNIT_WANTS, device, true); if (r < 0) return r; @@ -3178,6 +3172,10 @@ int unit_patch_contexts(Unit *u) { r = get_home_dir(&ec->working_directory); if (r < 0) return r; + + /* Allow user services to run, even if the + * home directory is missing */ + ec->working_directory_missing_ok = true; } if (u->manager->running_as == SYSTEMD_USER &&