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. --- 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel