diff options
Diffstat (limited to 'src/core/path.c')
-rw-r--r-- | src/core/path.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/core/path.c b/src/core/path.c index fbb695d87f..6be9ac84be 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -438,7 +438,12 @@ static void path_set_state(Path *p, PathState state) { static void path_enter_waiting(Path *p, bool initial, bool recheck); -static int path_coldplug(Unit *u) { +static int path_enter_waiting_coldplug(Unit *u) { + path_enter_waiting(PATH(u), true, true); + return 0; +} + +static int path_coldplug(Unit *u, Hashmap *deferred_work) { Path *p = PATH(u); assert(p); @@ -447,9 +452,10 @@ static int path_coldplug(Unit *u) { if (p->deserialized_state != p->state) { if (p->deserialized_state == PATH_WAITING || - p->deserialized_state == PATH_RUNNING) - path_enter_waiting(p, true, true); - else + p->deserialized_state == PATH_RUNNING) { + hashmap_put(deferred_work, u, &path_enter_waiting_coldplug); + path_set_state(p, PATH_WAITING); + } else path_set_state(p, p->deserialized_state); } |