On Wed, 13.03.13 01:44, Michal Schmidt ([email protected]) wrote:

> Attempt to satisfy requirement dependencies retroactively even if
> the unexpectedly activated unit would prefer to be started After them.
> 
> This way remote-fs-pre.target can be pulled in by performing a manual
> mount (the mount units have both Wants= and After=
> remote-fs-pre.target).

I am a bit concerned abou this. Wouldn't this also mean that if a mount
for /foobar/waldo suddenly shows up we'd still retroactively mount /foobar too,
if that happens to have a unit file? That sounds wrong, no?

Lennart

> ---
>  src/core/unit.c | 15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/src/core/unit.c b/src/core/unit.c
> index a6cc3b6..d1f109d 100644
> --- a/src/core/unit.c
> +++ b/src/core/unit.c
> @@ -1226,28 +1226,23 @@ static void retroactively_start_dependencies(Unit *u) 
> {
>          assert(UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(u)));
>  
>          SET_FOREACH(other, u->dependencies[UNIT_REQUIRES], i)
> -                if (!set_get(u->dependencies[UNIT_AFTER], other) &&
> -                    !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
> +                if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
>                          manager_add_job(u->manager, JOB_START, other, 
> JOB_REPLACE, true, NULL, NULL);
>  
>          SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i)
> -                if (!set_get(u->dependencies[UNIT_AFTER], other) &&
> -                    !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
> +                if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
>                          manager_add_job(u->manager, JOB_START, other, 
> JOB_REPLACE, true, NULL, NULL);
>  
>          SET_FOREACH(other, u->dependencies[UNIT_REQUIRES_OVERRIDABLE], i)
> -                if (!set_get(u->dependencies[UNIT_AFTER], other) &&
> -                    !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
> +                if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
>                          manager_add_job(u->manager, JOB_START, other, 
> JOB_FAIL, false, NULL, NULL);
>  
>          SET_FOREACH(other, u->dependencies[UNIT_REQUISITE], i)
> -                if (!set_get(u->dependencies[UNIT_AFTER], other) &&
> -                    !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
> +                if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
>                          manager_add_job(u->manager, JOB_START, other, 
> JOB_REPLACE, true, NULL, NULL);
>  
>          SET_FOREACH(other, u->dependencies[UNIT_WANTS], i)
> -                if (!set_get(u->dependencies[UNIT_AFTER], other) &&
> -                    !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
> +                if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
>                          manager_add_job(u->manager, JOB_START, other, 
> JOB_FAIL, false, NULL, NULL);
>  
>          SET_FOREACH(other, u->dependencies[UNIT_CONFLICTS], i)


Lennart

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

Reply via email to