summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-10-27 10:00:31 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2019-10-28 22:55:36 +0900
commitfec837e96e902c041adae552aa3101b8a8132869 (patch)
treeca3e8279a5d54c8504a00cd21e8704ceff9698f2
parent1c507a6db52a25566f3f267b0685c80802219c8c (diff)
downloadsystemd-fec837e96e902c041adae552aa3101b8a8132869.tar.gz
modules-load: do not fail service if modules are not present
It is pretty common for the service to fail in the initramfs (for example because certain modules have not been copied over or haven't been built yet in case of dkms modules). This seems to be more trouble than it is worth. Let's change the service to simply log any missing modules at error level, but not fail the whole service. https://bugzilla.redhat.com/show_bug.cgi?id=1254340
-rw-r--r--src/modules-load/modules-load.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 36bda3433f..7797f36d44 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -96,6 +96,8 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
continue;
k = module_load_and_warn(ctx, l, true);
+ if (k == -ENOENT)
+ continue;
if (k < 0 && r >= 0)
r = k;
}
@@ -124,7 +126,6 @@ static int help(void) {
}
static int parse_argv(int argc, char *argv[]) {
-
enum {
ARG_VERSION = 0x100,
};
@@ -141,7 +142,6 @@ static int parse_argv(int argc, char *argv[]) {
assert(argv);
while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
-
switch (c) {
case 'h':
@@ -202,6 +202,8 @@ static int run(int argc, char *argv[]) {
STRV_FOREACH(i, arg_proc_cmdline_modules) {
k = module_load_and_warn(ctx, *i, true);
+ if (k == -ENOENT)
+ continue;
if (k < 0 && r == 0)
r = k;
}