[systemd-devel] [PATCH] main: sync() before freeze()

Lennart Poettering lennart at poettering.net
Sat Jan 1 10:46:43 PST 2011


On Wed, 29.12.10 00:12, Tom Gundersen (teg at jklm.no) wrote:

> Avoids data loss when systemd freezes and a hard-reset is required.

Hmm, I figure it might make more sense putting the sync() call right in
the freeze() function, since there's probably no reason ever to call
freeze() without implying a sync()?

> ---
>  src/main.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/src/main.c b/src/main.c
> index 99e277c..82c8ddb 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -169,6 +169,7 @@ _noreturn_ static void crash(int sig) {
>                  log_info("Successfully spawned crash shall as pid %lu.", (unsigned long) pid);
>          }
>  
> +        sync();
>          log_info("Freezing execution.");
>          freeze();
>  }
> @@ -1297,8 +1298,10 @@ finish:
>                  log_error("Failed to execute shutdown binary, freezing: %m");
>          }
>  
> -        if (getpid() == 1)
> +        if (getpid() == 1) {
> +                sync();
>                  freeze();
> +	}
>  
>          return retval;
>  }


Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list