You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
5.6 KiB
164 lines
5.6 KiB
7 years ago
|
From 3282d24f8f9f7561312779710f250396f2ecc29b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||
|
Date: Sat, 2 May 2015 12:01:29 -0500
|
||
|
Subject: [PATCH] generators: rename add_{root,usr}_mount to
|
||
|
add_{sysroot,sysroot_usr}_mount
|
||
|
|
||
|
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.
|
||
|
|
||
|
(cherry picked from commit 2e8522767e27d5686206794c69e0aa95da6e798b)
|
||
|
|
||
|
Cherry-picked from: 2e85227
|
||
|
Resolves: #1222517
|
||
|
---
|
||
|
src/fstab-generator/fstab-generator.c | 20 ++++++++++++--------
|
||
|
src/shared/generator.c | 21 ++++++++++++---------
|
||
|
src/shared/generator.h | 17 +++++++++++++----
|
||
|
3 files changed, 37 insertions(+), 21 deletions(-)
|
||
|
|
||
|
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
|
||
|
index 65ed20579..029eb1638 100644
|
||
|
--- a/src/fstab-generator/fstab-generator.c
|
||
|
+++ b/src/fstab-generator/fstab-generator.c
|
||
|
@@ -250,10 +250,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");
|
||
|
@@ -470,7 +474,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;
|
||
|
|
||
|
@@ -506,7 +510,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;
|
||
|
|
||
|
@@ -653,9 +657,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 7f16d5cbe..cd37812f8 100644
|
||
|
--- a/src/shared/generator.c
|
||
|
+++ b/src/shared/generator.c
|
||
|
@@ -33,13 +33,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);
|
||
|
|
||
|
@@ -59,10 +59,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)
|
||
|
@@ -76,17 +76,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 64bd28f59..6c3f38abb 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);
|