[libvirt] [PATCH v1 1/1] qemu/gluster: add option for tuning debug logging level

Prasanna Kumar Kalever prasanna.kalever at redhat.com
Thu Sep 15 10:02:48 UTC 2016


This helps in selecting log level of the gluster gfapi, output to stderr.
The option is 'qemu_gfapi_debuglevel', can be tuned by editing
'/etc/libvirt/qemu.conf'

Debug levels ranges 0-9, with 9 being the most verbose, and 0 representing
no debugging output.  The default is the same as it was before, which
is a level of 4.  The current logging levels defined in the gluster
gfapi are:

    0 - None
    1 - Emergency
    2 - Alert
    3 - Critical
    4 - Error
    5 - Warning
    6 - Notice
    7 - Info
    8 - Debug
    9 - Trace

Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever at redhat.com>
--
v1: Initial post
---
 src/qemu/qemu.conf        | 20 ++++++++++++++++++++
 src/qemu/qemu_command.c   | 12 +++++++++++-
 src/qemu/qemu_conf.c      |  3 +++
 src/qemu/qemu_conf.h      |  1 +
 src/util/virstoragefile.h |  2 ++
 5 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf
index e4c2aae..c6c8f3a 100644
--- a/src/qemu/qemu.conf
+++ b/src/qemu/qemu.conf
@@ -621,3 +621,23 @@
 #          rollover when a size limit is hit.
 #
 #stdio_handler = "logd"
+
+# Qemu gluster libgfapi log level, debug levels are 0-9, with 9 being the
+# most verbose, and 0 representing no debugging output.
+#
+# The current logging levels defined in the gluster GFAPI are:
+#
+#    0 - None
+#    1 - Emergency
+#    2 - Alert
+#    3 - Critical
+#    4 - Error
+#    5 - Warning
+#    6 - Notice
+#    7 - Info
+#    8 - Debug
+#    9 - Trace
+#
+# Defaults to 4
+#
+# qemu_gfapi_debuglevel = 9
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 3a61863..650eedc 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -859,6 +859,7 @@ qemuBuildGlusterDriveJSON(virStorageSourcePtr src)
      /* { driver:"gluster",
       *   volume:"testvol",
       *   path:"/a.img",
+      *   debug:9,
       *   server :[{type:"tcp", host:"1.2.3.4", port:24007},
       *            {type:"unix", socket:"/tmp/glusterd.socket"}, ...]}
       */
@@ -866,6 +867,7 @@ qemuBuildGlusterDriveJSON(virStorageSourcePtr src)
                                  "s:driver", protocol,
                                  "s:volume", src->volume,
                                  "s:path", src->path,
+                                 "u:debug", src->debug_level,
                                  "a:server", servers, NULL) < 0)
           virJSONValueFree(servers);
 
@@ -2177,6 +2179,7 @@ qemuBuildDriveDevStr(const virDomainDef *def,
 
 static int
 qemuBuildDiskDriveCommandLine(virCommandPtr cmd,
+                              virQEMUDriverConfigPtr cfg,
                               const virDomainDef *def,
                               virQEMUCapsPtr qemuCaps)
 {
@@ -2255,6 +2258,13 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd,
 
         virCommandAddArg(cmd, "-drive");
 
+        if (disk->src &&
+                disk->src->protocol == VIR_STORAGE_NET_PROTOCOL_GLUSTER) {
+            if(cfg->qemuGfapiDebugLevel) {
+                disk->src->debug_level = cfg->qemuGfapiDebugLevel;
+            }
+        }
+
         if (!(optstr = qemuBuildDriveStr(disk, driveBoot, qemuCaps)))
             return -1;
         virCommandAddArg(cmd, optstr);
@@ -9613,7 +9623,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
     if (qemuBuildHubCommandLine(cmd, def, qemuCaps) < 0)
         goto error;
 
-    if (qemuBuildDiskDriveCommandLine(cmd, def, qemuCaps) < 0)
+    if (qemuBuildDiskDriveCommandLine(cmd, cfg, def, qemuCaps) < 0)
         goto error;
 
     if (qemuBuildFSDevCommandLine(cmd, def, qemuCaps) < 0)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index dad8334..d245cec 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -311,6 +311,7 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
     cfg->seccompSandbox = -1;
 
     cfg->logTimestamp = true;
+    cfg->qemuGfapiDebugLevel = 4;
     cfg->stdioLogD = true;
 
 #ifdef DEFAULT_LOADER_NVRAM
@@ -780,6 +781,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
                 goto cleanup;
         }
     }
+    if (virConfGetValueUInt(conf, "qemu_gfapi_debuglevel", &cfg->qemuGfapiDebugLevel) < 0)
+        goto cleanup;
 
     ret = 0;
 
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index d8232cc..fe70d9b 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -190,6 +190,7 @@ struct _virQEMUDriverConfig {
 
     virFirmwarePtr *firmwares;
     size_t nfirmwares;
+    unsigned int qemuGfapiDebugLevel;
 };
 
 /* Main driver state */
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index 3d09468..9f3add3 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -237,6 +237,8 @@ struct _virStorageSource {
     virStorageAuthDefPtr auth;
     virStorageEncryptionPtr encryption;
 
+    unsigned int debug_level;
+
     char *driverName;
     int format; /* virStorageFileFormat in domain backing chains, but
                  * pool-specific enum for storage volumes */
-- 
2.7.4




More information about the libvir-list mailing list