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:
parent
75945badd2
commit
27fda47f40
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user