[systemd-devel] [RFC][PATCH] main: ISOLATE rather than REPLACE default.target

Lennart Poettering lennart at poettering.net
Tue Mar 5 10:29:53 PST 2013


On Tue, 05.03.13 15:56, Tom Gundersen (teg at jklm.no) wrote:

> This allows switch-root to work correctly if a unit is active both before and
> after the switch-root, but its dependencies change. Before the patch, any
> dependencies added to active units by switch-root will not be pulled, in
> particular filesystems configured in /etc/fstab would not be activated if
> local-fs.target was active in the initrd.

Yes, this is the intended behaviour of JOB_REPLACE: we will not pull in
dependencies of units which are satisfied anyway.
> 
> It is not clear to me if there is a bug in the REPLACE handling, or if it is
> working as expected and that we really want to use ISOLATE instead as this patch
> does.

This might make sense to add. Michal, do you have an opinion on this? I
see no obvious problem with this patch, do you see any?
> 
> Comments?
> 
> Cc: Harald Hoyer <harald.hoyer at gmail.com>
> ---
>  src/core/main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/core/main.c b/src/core/main.c
> index 71e0a6c..2bbea7e 100644
> --- a/src/core/main.c
> +++ b/src/core/main.c
> @@ -1720,7 +1720,7 @@ int main(int argc, char *argv[]) {
>                          manager_dump_units(m, stdout, "\t");
>                  }
>  
> -                r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, &default_unit_job);
> +                r = manager_add_job(m, JOB_START, target, JOB_ISOLATE, false, &error, &default_unit_job);
>                  if (r < 0) {
>                          log_error("Failed to start default target: %s", bus_error(&error, r));
>                          dbus_error_free(&error);


Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list