File libvirt.xentoollog_logger_libvirt.patch of Package libvirt

From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 22 Jul 2021 16:54:53 +0200
Subject: xentoollog_logger_libvirt

Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
 src/libxl/libxl_conf.c   |  2 +-
 src/libxl/libxl_logger.c | 39 +++++----
 src/libxl/libxl_logger.h |  3 +-
 3 files changed, 26 insertions(+), 18 deletions(-)

--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -1803,25 +1803,25 @@ libxlDriverConfigNew(void)
 int
 libxlDriverConfigInit(libxlDriverConfig *cfg)
 {
     uint64_t free_mem;
 
     if (g_mkdir_with_parents(cfg->logDir, 0777) < 0) {
         virReportSystemError(errno,
                              _("failed to create log dir '%1$s'"),
                              cfg->logDir);
         return -1;
     }
 
-    cfg->logger = libxlLoggerNew(cfg->logDir, virLogGetDefaultPriority());
+    cfg->logger = libxlLoggerNew(cfg->logDir);
     if (!cfg->logger) {
         VIR_ERROR(_("cannot create logger for libxenlight, disabling driver"));
         return -1;
     }
 
     if (libxl_ctx_alloc(&cfg->ctx, LIBXL_VERSION, 0, (xentoollog_logger *)cfg->logger)) {
         VIR_ERROR(_("cannot initialize libxenlight context, probably not running in a Xen Dom0, disabling driver"));
         return -1;
     }
 
     if ((cfg->verInfo = libxl_get_version_info(cfg->ctx)) == NULL) {
         VIR_ERROR(_("cannot version information from libxenlight, disabling driver"));
--- a/src/libxl/libxl_logger.c
+++ b/src/libxl/libxl_logger.c
@@ -19,24 +19,25 @@
  */
 #include <config.h>
 
 #include <libxl.h>
 
 #include "internal.h"
 #include "libxl_logger.h"
 #include "util/viralloc.h"
 #include "util/virfile.h"
 #include "util/virhash.h"
 #include "util/virthread.h"
 #include "util/virtime.h"
+#include "virstring.h"
 
 #define VIR_FROM_THIS VIR_FROM_LIBXL
 
 VIR_LOG_INIT("libxl.libxl_logger");
 
 typedef struct xentoollog_logger_libvirt xentoollog_logger_libvirt;
 
 struct xentoollog_logger_libvirt {
     xentoollog_logger vtable;
     xentoollog_level minLevel;
     const char *logDir;
 
@@ -121,43 +122,51 @@ libvirt_progress(xentoollog_logger *logger_in G_GNUC_UNUSED,
     /* This function purposedly does nothing: it's no logging info */
 }
 
 static void
 libvirt_destroy(xentoollog_logger *logger_in)
 {
     xentoollog_logger_libvirt *lg = (xentoollog_logger_libvirt*)logger_in;
     VIR_FREE(lg);
 }
 
 
 libxlLogger *
-libxlLoggerNew(const char *logDir, virLogPriority minLevel)
+libxlLoggerNew(const char *logDir)
 {
     xentoollog_logger_libvirt logger;
     g_autofree char *path = NULL;
-
-    switch (minLevel) {
-    case VIR_LOG_DEBUG:
-        logger.minLevel = XTL_DEBUG;
-        break;
-    case VIR_LOG_INFO:
-        logger.minLevel = XTL_INFO;
-        break;
-    case VIR_LOG_WARN:
-        logger.minLevel = XTL_WARN;
-        break;
-    case VIR_LOG_ERROR:
-        logger.minLevel = XTL_ERROR;
-        break;
+    char *xenlight_minlevel = getenv("xenlight_minlevel");
+    int minlevel;
+
+    if (!(xenlight_minlevel && *xenlight_minlevel &&
+        virStrToLong_i(xenlight_minlevel, NULL, 10, &minlevel) >= 0 &&
+        minlevel > XTL_NONE && minlevel < XTL_NUM_LEVELS)) {
+        minlevel = virLogGetDefaultPriority();
+        switch (minlevel) {
+        case VIR_LOG_DEBUG:
+            minlevel = XTL_DEBUG;
+            break;
+        case VIR_LOG_INFO:
+            minlevel = XTL_INFO;
+            break;
+        case VIR_LOG_WARN:
+            minlevel = XTL_WARN;
+            break;
+        case VIR_LOG_ERROR:
+            minlevel = XTL_ERROR;
+            break;
+        }
     }
+    logger.minLevel = minlevel;
     logger.logDir = logDir;
 
     path = g_strdup_printf("%s/libxl-driver.log", logDir);
 
     if ((logger.defaultLogFile = fopen(path, "a")) == NULL)
         return NULL;
 
     if (virMutexInit(&logger.tableLock) < 0) {
         VIR_FORCE_FCLOSE(logger.defaultLogFile);
         return NULL;
     }
 
--- a/src/libxl/libxl_logger.h
+++ b/src/libxl/libxl_logger.h
@@ -15,19 +15,18 @@
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library.  If not, see
  * <http://www.gnu.org/licenses/>.
  */
 
 #pragma once
 
 #include "util/virlog.h"
 
 typedef struct xentoollog_logger_libvirt libxlLogger;
 
-libxlLogger *libxlLoggerNew(const char *logDir,
-                              virLogPriority minLevel);
+libxlLogger *libxlLoggerNew(const char *logDir);
 void libxlLoggerFree(libxlLogger *logger);
 
 void libxlLoggerOpenFile(libxlLogger *logger, int id, const char *name,
                          const char *domain_config);
 void libxlLoggerCloseFile(libxlLogger *logger, int id);
openSUSE Build Service is sponsored by