|
|
ddca0b |
From f71f3271fa149d2b5f022830d43071d97b022b38 Mon Sep 17 00:00:00 2001
|
|
|
ddca0b |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
|
ddca0b |
Date: Fri, 24 May 2019 08:59:23 +0200
|
|
|
ddca0b |
Subject: [PATCH] pid1: don't reset setting from /proc/cmdline upon restart
|
|
|
ddca0b |
|
|
|
ddca0b |
We have settings which may be set on the kernel command line, and also
|
|
|
ddca0b |
in /proc/cmdline (for pid1). The settings in /proc/cmdline have higher priority
|
|
|
ddca0b |
of course. When a reload was done, we'd reload just the configuration file,
|
|
|
ddca0b |
losing the overrides.
|
|
|
ddca0b |
|
|
|
ddca0b |
So read /proc/cmdline again during reload.
|
|
|
ddca0b |
|
|
|
ddca0b |
Also, when initially reading the configuration file when program starts,
|
|
|
ddca0b |
don't treat any errors as fatal. The configuration done in there doesn't
|
|
|
ddca0b |
seem important enough to refuse boot.
|
|
|
ddca0b |
|
|
|
ddca0b |
(cherry picked from commit 470a5e6dcec4637439ae953002127af214d396ac)
|
|
|
ddca0b |
|
|
|
ddca0b |
Related: #1734787
|
|
|
ddca0b |
---
|
|
|
ddca0b |
src/core/main.c | 26 ++++++++++++++++----------
|
|
|
ddca0b |
1 file changed, 16 insertions(+), 10 deletions(-)
|
|
|
ddca0b |
|
|
|
ddca0b |
diff --git a/src/core/main.c b/src/core/main.c
|
|
|
ddca0b |
index bc1db2af7b..9a9f145080 100644
|
|
|
ddca0b |
--- a/src/core/main.c
|
|
|
ddca0b |
+++ b/src/core/main.c
|
|
|
ddca0b |
@@ -129,6 +129,8 @@ static sd_id128_t arg_machine_id = {};
|
|
|
ddca0b |
static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE;
|
|
|
ddca0b |
static CPUSet arg_cpu_affinity = {};
|
|
|
ddca0b |
|
|
|
ddca0b |
+static int parse_configuration(void);
|
|
|
ddca0b |
+
|
|
|
ddca0b |
_noreturn_ static void freeze_or_reboot(void) {
|
|
|
ddca0b |
|
|
|
ddca0b |
if (arg_crash_reboot) {
|
|
|
ddca0b |
@@ -1659,9 +1661,7 @@ static int invoke_main_loop(
|
|
|
ddca0b |
saved_log_level = m->log_level_overridden ? log_get_max_level() : -1;
|
|
|
ddca0b |
saved_log_target = m->log_target_overridden ? log_get_target() : _LOG_TARGET_INVALID;
|
|
|
ddca0b |
|
|
|
ddca0b |
- r = parse_config_file();
|
|
|
ddca0b |
- if (r < 0)
|
|
|
ddca0b |
- log_warning_errno(r, "Failed to parse config file, ignoring: %m");
|
|
|
ddca0b |
+ (void) parse_configuration();
|
|
|
ddca0b |
|
|
|
ddca0b |
set_manager_defaults(m);
|
|
|
ddca0b |
|
|
|
ddca0b |
@@ -1965,18 +1965,14 @@ static void free_arguments(void) {
|
|
|
ddca0b |
cpu_set_reset(&arg_cpu_affinity);
|
|
|
ddca0b |
}
|
|
|
ddca0b |
|
|
|
ddca0b |
-static int load_configuration(int argc, char **argv, const char **ret_error_message) {
|
|
|
ddca0b |
+static int parse_configuration(void) {
|
|
|
ddca0b |
int r;
|
|
|
ddca0b |
|
|
|
ddca0b |
- assert(ret_error_message);
|
|
|
ddca0b |
-
|
|
|
ddca0b |
arg_default_tasks_max = system_tasks_max_scale(DEFAULT_TASKS_MAX_PERCENTAGE, 100U);
|
|
|
ddca0b |
|
|
|
ddca0b |
r = parse_config_file();
|
|
|
ddca0b |
- if (r < 0) {
|
|
|
ddca0b |
- *ret_error_message = "Failed to parse config file";
|
|
|
ddca0b |
- return r;
|
|
|
ddca0b |
- }
|
|
|
ddca0b |
+ if (r < 0)
|
|
|
ddca0b |
+ log_warning_errno(r, "Failed to parse config file, ignoring: %m");
|
|
|
ddca0b |
|
|
|
ddca0b |
if (arg_system) {
|
|
|
ddca0b |
r = proc_cmdline_parse(parse_proc_cmdline_item, NULL, 0);
|
|
|
ddca0b |
@@ -1987,6 +1983,16 @@ static int load_configuration(int argc, char **argv, const char **ret_error_mess
|
|
|
ddca0b |
/* Note that this also parses bits from the kernel command line, including "debug". */
|
|
|
ddca0b |
log_parse_environment();
|
|
|
ddca0b |
|
|
|
ddca0b |
+ return 0;
|
|
|
ddca0b |
+}
|
|
|
ddca0b |
+
|
|
|
ddca0b |
+static int load_configuration(int argc, char **argv, const char **ret_error_message) {
|
|
|
ddca0b |
+ int r;
|
|
|
ddca0b |
+
|
|
|
ddca0b |
+ assert(ret_error_message);
|
|
|
ddca0b |
+
|
|
|
ddca0b |
+ (void) parse_configuration();
|
|
|
ddca0b |
+
|
|
|
ddca0b |
r = parse_argv(argc, argv);
|
|
|
ddca0b |
if (r < 0) {
|
|
|
ddca0b |
*ret_error_message = "Failed to parse commandline arguments";
|