]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nodedev: Don't fail device enumeration if MDEVCTL is missing
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 13 Apr 2021 09:50:11 +0000 (11:50 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 14 Apr 2021 08:17:41 +0000 (10:17 +0200)
After all devices were enumerated, the enumeration thread call
nodeDeviceUpdateMediatedDevices() to refresh the state of
mediated devices. This means that 'mdevctl' will be executed. But
it may be missing on some systems (e.g. mine) in which case we
should just skip the update of mdevs instead of failing whole
device enumeration.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/node_device/node_device_driver.c

index 7aee8201e81b7305a0420e5abe692a67e3ac689c..180d9da5297b9acef43321de7db303a18eb6395d 100644 (file)
 #include "virnetdev.h"
 #include "virutil.h"
 #include "vircommand.h"
+#include "virlog.h"
 
 #define VIR_FROM_THIS VIR_FROM_NODEDEV
 
+VIR_LOG_INIT("node_device.node_device_driver");
+
 virNodeDeviceDriverState *driver;
 
 virDrvOpenStatus
@@ -1604,9 +1607,15 @@ nodeDeviceUpdateMediatedDevices(void)
 {
     g_autofree virNodeDeviceDef **defs = NULL;
     g_autofree char *errmsg = NULL;
+    g_autofree char *mdevctl = NULL;
     virMdevctlForEachData data = { 0, };
     size_t i;
 
+    if (!(mdevctl = virFindFileInPath(MDEVCTL))) {
+        VIR_DEBUG(MDEVCTL " not found. Skipping update of mediated devices.");
+        return 0;
+    }
+
     if ((data.ndefs = virMdevctlListDefined(&defs, &errmsg)) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("failed to query mdevs from mdevctl: %s"), errmsg);