dryang / rpms / systemd

Forked from rpms/systemd a year ago
Clone
Blob Blame History Raw
From 95f08deefa7c0611854d2831960e77be9a814969 Mon Sep 17 00:00:00 2001
From: Michal Sekletar <msekleta@redhat.com>
Date: Wed, 2 Apr 2014 15:13:18 +0200
Subject: [PATCH] unit: add waiting jobs to run queue in unit_coldplug

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 6ee34ec..a4e6c18 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -2539,6 +2539,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);