summaryrefslogtreecommitdiff
path: root/src/core/manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/manager.c')
-rw-r--r--src/core/manager.c35
1 files changed, 2 insertions, 33 deletions
diff --git a/src/core/manager.c b/src/core/manager.c
index 2b04644dc1..39a868fed6 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -981,28 +981,7 @@ static int manager_coldplug(Manager *m) {
Unit *u;
char *k;
- /*
- * Some unit types tend to spawn jobs or check other units' state
- * during coldplug. This is wrong because it is undefined whether the
- * units in question have been already coldplugged (i. e. their state
- * restored). This way, we can easily re-start an already started unit
- * or otherwise make a wrong decision based on the unit's state.
- *
- * Solve this by providing a way for coldplug functions to defer
- * such actions until after all units have been coldplugged.
- *
- * We store Unit* -> int(*)(Unit*).
- *
- * https://bugs.freedesktop.org/show_bug.cgi?id=88401
- */
- _cleanup_hashmap_free_ Hashmap *deferred_work = NULL;
- int(*proc)(Unit*);
-
- assert(m);
-
- deferred_work = hashmap_new(&trivial_hash_ops);
- if (!deferred_work)
- return -ENOMEM;
+ assert(m);
/* Then, let's set up their initial state. */
HASHMAP_FOREACH_KEY(u, k, m->units, i) {
@@ -1012,17 +991,7 @@ static int manager_coldplug(Manager *m) {
if (u->id != k)
continue;
- q = unit_coldplug(u, deferred_work);
- if (q < 0)
- r = q;
- }
-
- /* After coldplugging and setting up initial state of the units,
- * let's perform operations which spawn jobs or query units' state. */
- HASHMAP_FOREACH_KEY(proc, u, deferred_work, i) {
- int q;
-
- q = proc(u);
+ q = unit_coldplug(u);
if (q < 0)
r = q;
}