[systemd-devel] [PATCH] unit: add waiting jobs to run queue in unit_coldplug

Michal Sekletar msekleta at redhat.com
Tue Apr 1 09:45:54 PDT 2014


When we have job installed and added to run queue for service which is still in
dead state and systemd initiates reload then after reload we never add
deserialized job to the run queue again. This is caused by check in
service_coldplug() where we check if deserialized state is something else
than dead state, which is not the case thus we never call service_set_state()
and finally unit_notify() where we would have added job to the run queue.
---
 src/core/unit.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/core/unit.c b/src/core/unit.c
index 153b79b..bb7893b 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -2558,6 +2558,9 @@ int unit_coldplug(Unit *u) {
                 r = job_coldplug(u->job);
                 if (r < 0)
                         return r;
+
+                if (u->job->state == JOB_WAITING)
+                        job_add_to_run_queue(u->job);
         } else if (u->deserialized_job >= 0) {
                 /* legacy */
                 r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
-- 
1.8.4.2



More information about the systemd-devel mailing list