On Tue, 01.04.14 18:45, Michal Sekletar ([email protected]) wrote:

> 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.
> ---

This looks correct, but could you move this into job_coldplug()?

Otherwise looks great!

>  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);


Lennart

-- 
Lennart Poettering, Red Hat
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to