1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-26 17:25:34 +03:00

modules-load: don't fail on builtin modules, better prints

Distinguish between non-existing modules, builtin modules, already
loaded modules, and modules we load.
Only the non-existing ones are treated as errors.

https://bugzilla.redhat.com/show_bug.cgi?id=817760
This commit is contained in:
Michal Schmidt 2012-06-27 21:44:49 +02:00
parent 75945badd2
commit 27fda47f40

View File

@ -117,7 +117,7 @@ finish:
} }
static int load_module(struct kmod_ctx *ctx, const char *m) { static int load_module(struct kmod_ctx *ctx, const char *m) {
const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST|KMOD_PROBE_IGNORE_LOADED; const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST;
struct kmod_list *itr, *modlist = NULL; struct kmod_list *itr, *modlist = NULL;
int r = 0; int r = 0;
@ -129,22 +129,40 @@ static int load_module(struct kmod_ctx *ctx, const char *m) {
return r; return r;
} }
if (!modlist) {
log_error("Failed to find module '%s'", m);
return r;
}
kmod_list_foreach(itr, modlist) { kmod_list_foreach(itr, modlist) {
struct kmod_module *mod; struct kmod_module *mod;
int err; int state, err;
mod = kmod_module_get_module(itr); mod = kmod_module_get_module(itr);
err = kmod_module_probe_insert_module(mod, probe_flags, state = kmod_module_get_initstate(mod);
NULL, NULL, NULL, NULL);
if (err == 0) switch (state) {
log_info("Inserted module '%s'", kmod_module_get_name(mod)); case KMOD_MODULE_BUILTIN:
else if (err == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is builtin", kmod_module_get_name(mod));
log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); break;
else {
log_error("Failed to insert '%s': %s", kmod_module_get_name(mod), case KMOD_MODULE_LIVE:
strerror(-err)); log_info("Module '%s' is already loaded", kmod_module_get_name(mod));
r = err; break;
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));
else if (err == KMOD_PROBE_APPLY_BLACKLIST)
log_info("Module '%s' is blacklisted", kmod_module_get_name(mod));
else {
log_error("Failed to insert '%s': %s", kmod_module_get_name(mod),
strerror(-err));
r = err;
}
} }
kmod_module_unref(mod); kmod_module_unref(mod);