|
|
1ff636 |
From 3282d24f8f9f7561312779710f250396f2ecc29b Mon Sep 17 00:00:00 2001
|
|
|
1ff636 |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
|
1ff636 |
Date: Sat, 2 May 2015 12:01:29 -0500
|
|
|
1ff636 |
Subject: [PATCH] generators: rename add_{root,usr}_mount to
|
|
|
1ff636 |
add_{sysroot,sysroot_usr}_mount
|
|
|
1ff636 |
|
|
|
1ff636 |
This makes it obvious that those functions are only usable in the
|
|
|
1ff636 |
initramfs.
|
|
|
1ff636 |
|
|
|
1ff636 |
Also, add a warning when noauto, nofail, or automount is used for the
|
|
|
1ff636 |
root fs, instead of silently ignoring. Using those options would be a
|
|
|
1ff636 |
sign of significant misconfiguration, and if we bother to check for
|
|
|
1ff636 |
them, than let's go all the way and complain.
|
|
|
1ff636 |
|
|
|
1ff636 |
Other various small cleanups and reformattings elsewhere.
|
|
|
1ff636 |
|
|
|
1ff636 |
(cherry picked from commit 2e8522767e27d5686206794c69e0aa95da6e798b)
|
|
|
1ff636 |
|
|
|
1ff636 |
Cherry-picked from: 2e85227
|
|
|
1ff636 |
Resolves: #1222517
|
|
|
1ff636 |
---
|
|
|
1ff636 |
src/fstab-generator/fstab-generator.c | 20 ++++++++++++--------
|
|
|
1ff636 |
src/shared/generator.c | 21 ++++++++++++---------
|
|
|
1ff636 |
src/shared/generator.h | 17 +++++++++++++----
|
|
|
1ff636 |
3 files changed, 37 insertions(+), 21 deletions(-)
|
|
|
1ff636 |
|
|
|
1ff636 |
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
|
|
Pablo Greco |
48fc63 |
index 65ed205799..029eb16380 100644
|
|
|
1ff636 |
--- a/src/fstab-generator/fstab-generator.c
|
|
|
1ff636 |
+++ b/src/fstab-generator/fstab-generator.c
|
|
|
1ff636 |
@@ -250,10 +250,14 @@ static int add_mount(
|
|
|
1ff636 |
return 0;
|
|
|
1ff636 |
|
|
|
1ff636 |
if (path_equal(where, "/")) {
|
|
|
1ff636 |
- /* The root disk is not an option */
|
|
|
1ff636 |
- automount = false;
|
|
|
1ff636 |
- noauto = false;
|
|
|
1ff636 |
- nofail = false;
|
|
|
1ff636 |
+ if (noauto)
|
|
|
1ff636 |
+ log_warning("Ignoring \"noauto\" for root device");
|
|
|
1ff636 |
+ if (nofail)
|
|
|
1ff636 |
+ log_warning("Ignoring \"nofail\" for root device");
|
|
|
1ff636 |
+ if (automount)
|
|
|
1ff636 |
+ log_warning("Ignoring automount option for root device");
|
|
|
1ff636 |
+
|
|
|
1ff636 |
+ noauto = nofail = automount = false;
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
name = unit_name_from_path(where, ".mount");
|
|
|
1ff636 |
@@ -470,7 +474,7 @@ static int parse_fstab(bool initrd) {
|
|
|
1ff636 |
return r;
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
-static int add_root_mount(void) {
|
|
|
1ff636 |
+static int add_sysroot_mount(void) {
|
|
|
1ff636 |
_cleanup_free_ char *what = NULL;
|
|
|
1ff636 |
const char *opts;
|
|
|
1ff636 |
|
|
|
1ff636 |
@@ -506,7 +510,7 @@ static int add_root_mount(void) {
|
|
|
1ff636 |
"/proc/cmdline");
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
-static int add_usr_mount(void) {
|
|
|
1ff636 |
+static int add_sysroot_usr_mount(void) {
|
|
|
1ff636 |
_cleanup_free_ char *what = NULL;
|
|
|
1ff636 |
const char *opts;
|
|
|
1ff636 |
|
|
|
1ff636 |
@@ -653,9 +657,9 @@ int main(int argc, char *argv[]) {
|
|
|
1ff636 |
|
|
|
1ff636 |
/* Always honour root= and usr= in the kernel command line if we are in an initrd */
|
|
|
1ff636 |
if (in_initrd()) {
|
|
|
1ff636 |
- r = add_root_mount();
|
|
|
1ff636 |
+ r = add_sysroot_mount();
|
|
|
1ff636 |
if (r == 0)
|
|
|
1ff636 |
- r = add_usr_mount();
|
|
|
1ff636 |
+ r = add_sysroot_usr_mount();
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
/* Honour /etc/fstab only when that's enabled */
|
|
|
1ff636 |
diff --git a/src/shared/generator.c b/src/shared/generator.c
|
|
Pablo Greco |
48fc63 |
index 7f16d5cbef..cd37812f86 100644
|
|
|
1ff636 |
--- a/src/shared/generator.c
|
|
|
1ff636 |
+++ b/src/shared/generator.c
|
|
|
1ff636 |
@@ -33,13 +33,13 @@
|
|
|
1ff636 |
|
|
|
1ff636 |
int generator_write_fsck_deps(
|
|
|
1ff636 |
FILE *f,
|
|
|
1ff636 |
- const char *dest,
|
|
|
1ff636 |
+ const char *dir,
|
|
|
1ff636 |
const char *what,
|
|
|
1ff636 |
const char *where,
|
|
|
1ff636 |
const char *fstype) {
|
|
|
1ff636 |
|
|
|
1ff636 |
assert(f);
|
|
|
1ff636 |
- assert(dest);
|
|
|
1ff636 |
+ assert(dir);
|
|
|
1ff636 |
assert(what);
|
|
|
1ff636 |
assert(where);
|
|
|
1ff636 |
|
|
|
1ff636 |
@@ -59,10 +59,10 @@ int generator_write_fsck_deps(
|
|
|
1ff636 |
return log_warning_errno(r, "Checking was requested for %s, but fsck.%s cannot be used: %m", what, fstype);
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
- if (streq(where, "/")) {
|
|
|
1ff636 |
+ if (path_equal(where, "/")) {
|
|
|
1ff636 |
char *lnk;
|
|
|
1ff636 |
|
|
|
1ff636 |
- lnk = strjoina(dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
|
|
|
1ff636 |
+ lnk = strjoina(dir, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
|
|
|
1ff636 |
|
|
|
1ff636 |
mkdir_parents(lnk, 0755);
|
|
|
1ff636 |
if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0)
|
|
|
1ff636 |
@@ -76,17 +76,20 @@ int generator_write_fsck_deps(
|
|
|
1ff636 |
return log_oom();
|
|
|
1ff636 |
|
|
|
1ff636 |
fprintf(f,
|
|
|
1ff636 |
- "RequiresOverridable=%s\n"
|
|
|
1ff636 |
- "After=%s\n",
|
|
|
1ff636 |
- fsck,
|
|
|
1ff636 |
+ "RequiresOverridable=%1$s\n"
|
|
|
1ff636 |
+ "After=%1$s\n",
|
|
|
1ff636 |
fsck);
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
return 0;
|
|
|
1ff636 |
}
|
|
|
1ff636 |
|
|
|
1ff636 |
-int generator_write_timeouts(const char *dir, const char *what, const char *where,
|
|
|
1ff636 |
- const char *opts, char **filtered) {
|
|
|
1ff636 |
+int generator_write_timeouts(
|
|
|
1ff636 |
+ const char *dir,
|
|
|
1ff636 |
+ const char *what,
|
|
|
1ff636 |
+ const char *where,
|
|
|
1ff636 |
+ const char *opts,
|
|
|
1ff636 |
+ char **filtered) {
|
|
|
1ff636 |
|
|
|
1ff636 |
/* Allow configuration how long we wait for a device that
|
|
|
1ff636 |
* backs a mount point to show up. This is useful to support
|
|
|
1ff636 |
diff --git a/src/shared/generator.h b/src/shared/generator.h
|
|
Pablo Greco |
48fc63 |
index 64bd28f596..6c3f38abba 100644
|
|
|
1ff636 |
--- a/src/shared/generator.h
|
|
|
1ff636 |
+++ b/src/shared/generator.h
|
|
|
1ff636 |
@@ -23,7 +23,16 @@
|
|
|
1ff636 |
|
|
|
1ff636 |
#include <stdio.h>
|
|
|
1ff636 |
|
|
|
1ff636 |
-int generator_write_fsck_deps(FILE *f, const char *dest, const char *what, const char *where, const char *type);
|
|
|
1ff636 |
-
|
|
|
1ff636 |
-int generator_write_timeouts(const char *dir, const char *what, const char *where,
|
|
|
1ff636 |
- const char *opts, char **filtered);
|
|
|
1ff636 |
+int generator_write_fsck_deps(
|
|
|
1ff636 |
+ FILE *f,
|
|
|
1ff636 |
+ const char *dir,
|
|
|
1ff636 |
+ const char *what,
|
|
|
1ff636 |
+ const char *where,
|
|
|
1ff636 |
+ const char *type);
|
|
|
1ff636 |
+
|
|
|
1ff636 |
+int generator_write_timeouts(
|
|
|
1ff636 |
+ const char *dir,
|
|
|
1ff636 |
+ const char *what,
|
|
|
1ff636 |
+ const char *where,
|
|
|
1ff636 |
+ const char *opts,
|
|
|
1ff636 |
+ char **filtered);
|