diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index b3a4e818b6..4b0b9f4c80 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -92,7 +92,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent if (strchr(COMMENTS "\n", *l)) continue; - k = module_load_and_warn(ctx, l); + k = module_load_and_warn(ctx, l, true); if (k < 0 && r == 0) r = k; } @@ -189,7 +189,7 @@ int main(int argc, char *argv[]) { char **fn, **i; STRV_FOREACH(i, arg_proc_cmdline_modules) { - k = module_load_and_warn(ctx, *i); + k = module_load_and_warn(ctx, *i, true); if (k < 0 && r == 0) r = k; } diff --git a/src/shared/module-util.c b/src/shared/module-util.c index 36f4f364c1..af6a9b01e7 100644 --- a/src/shared/module-util.c +++ b/src/shared/module-util.c @@ -4,20 +4,25 @@ #include "module-util.h" -int module_load_and_warn(struct kmod_ctx *ctx, const char *module) { +int module_load_and_warn(struct kmod_ctx *ctx, const char *module, bool verbose) { const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST; struct kmod_list *itr; _cleanup_(kmod_module_unref_listp) struct kmod_list *modlist = NULL; int r = 0; + /* verbose==true means we should log at non-debug level if we + * fail to find or load the module. */ + log_debug("Loading module: %s", module); r = kmod_module_new_from_lookup(ctx, module, &modlist); if (r < 0) - return log_error_errno(r, "Failed to lookup module alias '%s': %m", module); + return log_full_errno(verbose ? LOG_ERR : LOG_DEBUG, r, + "Failed to lookup module alias '%s': %m", module); if (!modlist) { - log_error("Failed to find module '%s'", module); + log_full_errno(verbose ? LOG_ERR : LOG_DEBUG, r, + "Failed to find module '%s'", module); return -ENOENT; } @@ -30,7 +35,8 @@ int module_load_and_warn(struct kmod_ctx *ctx, const char *module) { switch (state) { case KMOD_MODULE_BUILTIN: - log_info("Module '%s' is builtin", kmod_module_get_name(mod)); + log_full(verbose ? LOG_INFO : LOG_DEBUG, + "Module '%s' is builtin", kmod_module_get_name(mod)); break; case KMOD_MODULE_LIVE: @@ -40,15 +46,17 @@ int module_load_and_warn(struct kmod_ctx *ctx, const char *module) { default: err = kmod_module_probe_insert_module(mod, probe_flags, NULL, NULL, NULL, NULL); - if (err == 0) - log_info("Inserted module '%s'", kmod_module_get_name(mod)); + log_full(verbose ? LOG_INFO : LOG_DEBUG, + "Inserted module '%s'", kmod_module_get_name(mod)); else if (err == KMOD_PROBE_APPLY_BLACKLIST) - log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); + log_full(verbose ? LOG_INFO : LOG_DEBUG, + "Module '%s' is blacklisted", kmod_module_get_name(mod)); else { assert(err < 0); - log_full_errno(err == ENODEV ? LOG_NOTICE : + log_full_errno(!verbose ? LOG_DEBUG : + err == ENODEV ? LOG_NOTICE : err == ENOENT ? LOG_WARNING : LOG_ERR, err, diff --git a/src/shared/module-util.h b/src/shared/module-util.h index 16cac90258..c386c5b459 100644 --- a/src/shared/module-util.h +++ b/src/shared/module-util.h @@ -9,4 +9,4 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(struct kmod_ctx*, kmod_unref); DEFINE_TRIVIAL_CLEANUP_FUNC(struct kmod_module*, kmod_module_unref); DEFINE_TRIVIAL_CLEANUP_FUNC(struct kmod_list*, kmod_module_unref_list); -int module_load_and_warn(struct kmod_ctx *ctx, const char *module); +int module_load_and_warn(struct kmod_ctx *ctx, const char *module, bool verbose); diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c index e24e8e55e2..f5e09cebde 100644 --- a/src/udev/udev-builtin-kmod.c +++ b/src/udev/udev-builtin-kmod.c @@ -18,41 +18,11 @@ static struct kmod_ctx *ctx = NULL; -static int load_module(struct udev *udev, const char *alias) { - _cleanup_(kmod_module_unref_listp) struct kmod_list *list = NULL; - struct kmod_list *l; - int err; - - err = kmod_module_new_from_lookup(ctx, alias, &list); - if (err < 0) - return err; - - if (list == NULL) - log_debug("No module matches '%s'", alias); - - kmod_list_foreach(l, list) { - _cleanup_(kmod_module_unrefp) struct kmod_module *mod = NULL; - - mod = kmod_module_get_module(l); - - err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL); - if (err == KMOD_PROBE_APPLY_BLACKLIST) - log_debug("Module '%s' is blacklisted", kmod_module_get_name(mod)); - else if (err == 0) - log_debug("Inserted '%s'", kmod_module_get_name(mod)); - else - log_debug("Failed to insert '%s'", kmod_module_get_name(mod)); - } - - return err; -} - _printf_(6,0) static void udev_kmod_log(void *data, int priority, const char *file, int line, const char *fn, const char *format, va_list args) { log_internalv(priority, 0, file, line, fn, format, args); } static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool test) { - struct udev *udev = udev_device_get_udev(dev); int i; if (!ctx) @@ -65,7 +35,7 @@ static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool te for (i = 2; argv[i]; i++) { log_debug("Execute '%s' '%s'", argv[1], argv[i]); - load_module(udev, argv[i]); + (void) module_load_and_warn(ctx, argv[i], false); } return EXIT_SUCCESS;