On Fri, 01.03.13 15:13, [email protected] ([email protected]) wrote:

> From: Harald Hoyer <[email protected]>
> 
> If no "ro" or "rw" is specified on the kernel command line, mount root
> read-only on /sysroot by default

This sounds good, in order to stay in sync with the initrd-less kernel
logic. Please commit!

> ---
>  src/fstab-generator/fstab-generator.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/src/fstab-generator/fstab-generator.c 
> b/src/fstab-generator/fstab-generator.c
> index 026d070..d83e73f 100644
> --- a/src/fstab-generator/fstab-generator.c
> +++ b/src/fstab-generator/fstab-generator.c
> @@ -465,9 +465,11 @@ finish:
>  static int parse_new_root_from_proc_cmdline(void) {
>          char *w, *state;
>          _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line 
> = NULL;
> +        char *tmp_word;
>          int r;
>          size_t l;
>          bool wait = false;
> +        bool ro_rw = false;
>  
>          r = read_one_line_file("/proc/cmdline", &line);
>          if (r < 0) {
> @@ -482,7 +484,7 @@ static int parse_new_root_from_proc_cmdline(void) {
>          /* root= and roofstype= may occur more than once, the last instance 
> should take precedence.
>           * In the case of multiple rootflags= the arguments should be 
> concatenated */
>          FOREACH_WORD_QUOTED(w, l, line, state) {
> -                char *word, *tmp_word;
> +                char *word;
>  
>                  word = strndup(w, l);
>                  if (!word)
> @@ -514,12 +516,22 @@ static int parse_new_root_from_proc_cmdline(void) {
>                          if (!opts)
>                                  return log_oom();
>  
> +                        ro_rw = true;
> +
>                  } else if (streq(word, "rootwait"))
>                          wait = true;
>  
>                  free(word);
>          }
>  
> +        if (!ro_rw) {
> +                tmp_word = opts;
> +                opts = strjoin(opts, ",", "ro", NULL);
> +                free(tmp_word);
> +                if (!opts)
> +                        return log_oom();
> +        }
> +
>          if (what) {
>  
>                  log_debug("Found entry what=%s where=/sysroot type=%s", 
> what, type);


Lennart

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

Reply via email to