[systemd-devel] [PATCH 1/3] generators: rename add_{root, usr}_mount to add_{sysroot, sysroot_usr}_mount

Lennart Poettering lennart at poettering.net
Sun May 3 17:56:31 PDT 2015


On Sat, 02.05.15 13:16, Zbigniew Jędrzejewski-Szmek (zbyszek at in.waw.pl) wrote:

> This makes it obvious that those functions are only usable in the
> initramfs.
> 
> Also, add a warning when noauto, nofail, or automount is used for the
> root fs, instead of silently ignoring. Using those options would be a
> sign of significant misconfiguration, and if we bother to check for
> them, than let's go all the way and complain.
> 
> Other various small cleanups and reformattings elsewhere.

Sounds all good to me!

> ---
>  src/fstab-generator/fstab-generator.c | 21 +++++++++++++--------
>  src/shared/generator.c                | 21 ++++++++++++---------
>  src/shared/generator.h                | 17 +++++++++++++----
>  3 files changed, 38 insertions(+), 21 deletions(-)
> 
> diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
> index 7aee3359e7..664ee2aa6f 100644
> --- a/src/fstab-generator/fstab-generator.c
> +++ b/src/fstab-generator/fstab-generator.c
> @@ -176,6 +176,7 @@ static int write_idle_timeout(FILE *f, const char *where, const char *opts) {
>  
>          return 0;
>  }
> +
>  static int add_mount(
>                  const char *what,
>                  const char *where,
> @@ -213,10 +214,14 @@ static int add_mount(
>                  return 0;
>  
>          if (path_equal(where, "/")) {
> -                /* The root disk is not an option */
> -                automount = false;
> -                noauto = false;
> -                nofail = false;
> +                if (noauto)
> +                        log_warning("Ignoring \"noauto\" for root device");
> +                if (nofail)
> +                        log_warning("Ignoring \"nofail\" for root device");
> +                if (automount)
> +                        log_warning("Ignoring automount option for root device");
> +
> +                noauto = nofail = automount = false;
>          }
>  
>          name = unit_name_from_path(where, ".mount");
> @@ -419,7 +424,7 @@ static int parse_fstab(bool initrd) {
>          return r;
>  }
>  
> -static int add_root_mount(void) {
> +static int add_sysroot_mount(void) {
>          _cleanup_free_ char *what = NULL;
>          const char *opts;
>  
> @@ -453,7 +458,7 @@ static int add_root_mount(void) {
>                           "/proc/cmdline");
>  }
>  
> -static int add_usr_mount(void) {
> +static int add_sysroot_usr_mount(void) {
>          _cleanup_free_ char *what = NULL;
>          const char *opts;
>  
> @@ -600,9 +605,9 @@ int main(int argc, char *argv[]) {
>  
>          /* Always honour root= and usr= in the kernel command line if we are in an initrd */
>          if (in_initrd()) {
> -                r = add_root_mount();
> +                r = add_sysroot_mount();
>                  if (r == 0)
> -                        r = add_usr_mount();
> +                        r = add_sysroot_usr_mount();
>          }
>  
>          /* Honour /etc/fstab only when that's enabled */
> diff --git a/src/shared/generator.c b/src/shared/generator.c
> index 569b25bb7c..7b2f846175 100644
> --- a/src/shared/generator.c
> +++ b/src/shared/generator.c
> @@ -32,13 +32,13 @@
>  
>  int generator_write_fsck_deps(
>                  FILE *f,
> -                const char *dest,
> +                const char *dir,
>                  const char *what,
>                  const char *where,
>                  const char *fstype) {
>  
>          assert(f);
> -        assert(dest);
> +        assert(dir);
>          assert(what);
>          assert(where);
>  
> @@ -58,10 +58,10 @@ int generator_write_fsck_deps(
>                          return log_warning_errno(r, "Checking was requested for %s, but fsck.%s cannot be used: %m", what, fstype);
>          }
>  
> -        if (streq(where, "/")) {
> +        if (path_equal(where, "/")) {
>                  char *lnk;
>  
> -                lnk = strjoina(dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
> +                lnk = strjoina(dir, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
>  
>                  mkdir_parents(lnk, 0755);
>                  if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0)
> @@ -75,17 +75,20 @@ int generator_write_fsck_deps(
>                          return log_oom();
>  
>                  fprintf(f,
> -                        "RequiresOverridable=%s\n"
> -                        "After=%s\n",
> -                        fsck,
> +                        "RequiresOverridable=%1$s\n"
> +                        "After=%1$s\n",
>                          fsck);
>          }
>  
>          return 0;
>  }
>  
> -int generator_write_timeouts(const char *dir, const char *what, const char *where,
> -                             const char *opts, char **filtered) {
> +int generator_write_timeouts(
> +                const char *dir,
> +                const char *what,
> +                const char *where,
> +                const char *opts,
> +                char **filtered) {
>  
>          /* Allow configuration how long we wait for a device that
>           * backs a mount point to show up. This is useful to support
> diff --git a/src/shared/generator.h b/src/shared/generator.h
> index 64bd28f596..6c3f38abba 100644
> --- a/src/shared/generator.h
> +++ b/src/shared/generator.h
> @@ -23,7 +23,16 @@
>  
>  #include <stdio.h>
>  
> -int generator_write_fsck_deps(FILE *f, const char *dest, const char *what, const char *where, const char *type);
> -
> -int generator_write_timeouts(const char *dir, const char *what, const char *where,
> -                             const char *opts, char **filtered);
> +int generator_write_fsck_deps(
> +        FILE *f,
> +        const char *dir,
> +        const char *what,
> +        const char *where,
> +        const char *type);
> +
> +int generator_write_timeouts(
> +        const char *dir,
> +        const char *what,
> +        const char *where,
> +        const char *opts,
> +        char **filtered);
> -- 
> 2.3.5
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list