Revert "core: do not spawn jobs or touch other units during coldplugging"

This reverts commit 6e392c9c45.

We really shouldn't invent external state keeping hashmaps, if we can
keep this state in the units themselves.
This commit is contained in:
Lennart Poettering
2015-04-24 15:51:10 +02:00
parent 9211e87514
commit be847e82cf
16 changed files with 32 additions and 88 deletions
+9 -16
View File
@@ -2875,34 +2875,27 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
return 0;
}
static int unit_add_deserialized_job_coldplug(Unit *u) {
int r;
r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
if (r < 0)
return r;
u->deserialized_job = _JOB_TYPE_INVALID;
return 0;
}
int unit_coldplug(Unit *u, Hashmap *deferred_work) {
int unit_coldplug(Unit *u) {
int r;
assert(u);
if (UNIT_VTABLE(u)->coldplug)
if ((r = UNIT_VTABLE(u)->coldplug(u, deferred_work)) < 0)
if ((r = UNIT_VTABLE(u)->coldplug(u)) < 0)
return r;
if (u->job) {
r = job_coldplug(u->job);
if (r < 0)
return r;
} else if (u->deserialized_job >= 0)
} else if (u->deserialized_job >= 0) {
/* legacy */
hashmap_put(deferred_work, u, &unit_add_deserialized_job_coldplug);
r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
if (r < 0)
return r;
u->deserialized_job = _JOB_TYPE_INVALID;
}
return 0;
}