X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fpath.c;fp=src%2Fcore%2Fpath.c;h=6be9ac84bed841393fd364d8ee14381da8ce3ce8;hp=fbb695d87ff8283897a3f24c71b9f5e060facc71;hb=6e392c9c45643d106673c6643ac8bf4e65da13c1;hpb=6829cec4dce1b41c895425a120b70d0a3ed677ab diff --git a/src/core/path.c b/src/core/path.c index fbb695d87..6be9ac84b 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); }