From: Philippe Proulx Date: Mon, 15 Sep 2014 17:43:56 +0000 (-0400) Subject: Fix: ignore error when loading optional kmod X-Git-Tag: v2.6.0-rc1~54 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=16c2e854ac155702515506f6a9b4751c594c516d;p=lttng-tools.git Fix: ignore error when loading optional kmod This commit also improves the accuracy of debug messages: a module is not "successfully" loaded when it's optional and actually not loaded. Fixes: #837 Signed-off-by: Philippe Proulx Signed-off-by: David Goulet --- diff --git a/src/bin/lttng-sessiond/modprobe.c b/src/bin/lttng-sessiond/modprobe.c index d329bb951..a28356b42 100644 --- a/src/bin/lttng-sessiond/modprobe.c +++ b/src/bin/lttng-sessiond/modprobe.c @@ -209,8 +209,16 @@ static int modprobe_lttng(struct kern_modules_param *modules, ret = kmod_module_probe_insert_module(mod, KMOD_PROBE_IGNORE_LOADED, NULL, NULL, NULL, NULL); - if (required && ret < 0) { - ERR("Unable to load module %s", modules[i].name); + if (ret < 0) { + if (required) { + ERR("Unable to load required module %s", + modules[i].name); + goto error; + } else { + DBG("Unable to load optional module %s; continuing", + modules[i].name); + ret = 0; + } } else { DBG("Modprobe successfully %s", modules[i].name); } @@ -245,10 +253,25 @@ static int modprobe_lttng(struct kern_modules_param *modules, modprobe[sizeof(modprobe) - 1] = '\0'; ret = system(modprobe); if (ret == -1) { - ERR("Unable to launch modprobe for module %s", - modules[i].name); - } else if (required && WEXITSTATUS(ret) != 0) { - ERR("Unable to load module %s", modules[i].name); + if (required) { + ERR("Unable to launch modprobe for required module %s", + modules[i].name); + goto error; + } else { + DBG("Unable to launch modprobe for optional module %s; continuing", + modules[i].name); + ret = 0; + } + } else if (WEXITSTATUS(ret) != 0) { + if (required) { + ERR("Unable to load required module %s", + modules[i].name); + goto error; + } else { + DBG("Unable to load optional module %s; continuing", + modules[i].name); + ret = 0; + } } else { DBG("Modprobe successfully %s", modules[i].name); }