From 304b3079a2039971db6d89f4557931776b758e41 Mon Sep 17 00:00:00 2001 From: Dimitri John Ledkov Date: Fri, 15 May 2015 11:44:22 +0100 Subject: [PATCH] core: Execute first boot presets in an enable-only preset-mode. This means any existing enabled units well be preserved and no pre-created symlinks will be removed. This is done on first boot, when the assumption is that /etc is not populated at all (no machine-id setup). For minimal containers that gives a significant first boot speed up, approximately ~20ms / ~16% in my trials. --- TODO | 4 ---- src/core/main.c | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/TODO b/TODO index 932fef6431..dd85f57473 100644 --- a/TODO +++ b/TODO @@ -149,10 +149,6 @@ Features: that are not supported... http://lists.freedesktop.org/archives/systemd-devel/2015-February/028076.html -* PID 1: when invoking systemctl preset-all on first boots, operate in - an exclusively additive way, i.e. never remove any pre-existing - symlinks, only add new ones. - * Introduce $LISTEN_NAMES to complement $LISTEN_FDS, containing a colon separated list of identifiers for the fds passed. diff --git a/src/core/main.c b/src/core/main.c index 08e84d8304..c39815b106 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1618,7 +1618,7 @@ int main(int argc, char *argv[]) { bump_rlimit_nofile(&saved_rlimit_nofile); if (empty_etc) { - r = unit_file_preset_all(UNIT_FILE_SYSTEM, false, NULL, UNIT_FILE_PRESET_FULL, false, NULL, 0); + r = unit_file_preset_all(UNIT_FILE_SYSTEM, false, NULL, UNIT_FILE_PRESET_ENABLE_ONLY, false, NULL, 0); if (r < 0) log_warning_errno(r, "Failed to populate /etc with preset unit settings, ignoring: %m"); else