sessiond: log error message when libkmod operations fail
authorKienan Stewart <kstewart@efficios.com>
Wed, 22 Nov 2023 16:18:23 +0000 (11:18 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 4 Dec 2023 15:11:57 +0000 (10:11 -0500)
commit7d46777ba0eaba7916ae822a7133f39740cdf9e5
treea6c2d4fa48cc699ec33bd9a28d0412ed03edb35e
parentf0a9c004f8ee3766394e8764da85dd56f2bf5dd4
sessiond: log error message when libkmod operations fail

Issue observed
--------------

When loading or unloading modules and libkmod is being used, there are
no details available in the `lttng-sessiond` error ouput.

For example,

```
$ sudo -E lttng-sessiond
Error: Unable to load required module lttng-ring-buffer-client-discard
Warning: No kernel tracer available
```

When libkmod is not available or disabled in the configuration
options, `lttng-sessiond` falls back to invoking `modprobe` via a
`system` call. The command's error output will be visible and provide
the necessary details, eg.

```
$ sudo -E lttng-sessiond
modprobe: FATAL: Module lttng-ring-buffer-client-discard not found in directory /usr/lib/modules/6.2.0-36-generic
Error: Unable to load required module lttng-ring-buffer-client-discard
Warning: No kernel tracer available
```

Solution
--------

Include the error message from `strerror` in the message that is
logged via the `DBG` or `ERR` macros.

The error is no clearer for users, eg.

```
$ sudo -E lttng-sessiond
PERROR - 12:00:05.004593045 [Main]: Unable to load required module
lttng-ring-buffer-client-discard: No such file or directory (in
modprobe_lttng() at modprobe.cpp:396)
Warning: No kernel tracer available
```

Known drawbacks
---------------

The debug message emitted when a non-obligatory kernel module fails to
load is now printed with `PERROR`.

Change-Id: Ibd25614a6c5b5dd3b801063eafc272a4017058cd
Signed-off-by: Kienan Stewart <kstewart@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/modprobe.cpp
This page took 0.025592 seconds and 4 git commands to generate.