[systemd-devel] [PATCH] switch_root: do not fail, if base_filesystem_create() failed

Lennart Poettering lennart at poettering.net
Wed Sep 3 10:05:01 PDT 2014


On Wed, 03.09.14 13:34, harald at redhat.com (harald at redhat.com) wrote:

> From: Harald Hoyer <harald at redhat.com>
> 
> Not all switch roots are like base_filesystem_create() wants them
> to look like. They might even boot, if they are RO and don't have the FS
> layout. Just output the error and switch_root nevertheless.
> ---
>  src/shared/switch-root.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
> index 5f075e6..fcd3420 100644
> --- a/src/shared/switch-root.c
> +++ b/src/shared/switch-root.c
> @@ -107,7 +107,7 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
>          r = base_filesystem_create(new_root);
>          if (r < 0) {
>                  log_error("Failed to create the base filesystem: %s", strerror(-r));
> -                return r;
> +                r = 0;

As discussed on phone: this call appears to log on its own anyway,
there's no point in doing this here again. We really shouldn't log
about errors that happen multiple times.

Hence: just eat up the exit code entirely here, ignore any failures,
don't assign the return value to r, just invoke the function without
caring for the return value. The call logs on its own already, and
what it does should not be reason to fail this early.


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list