[libvirt] [PATCH RFC 03/22] storage: Rework debugging of storage file access through storage driver

Peter Krempa pkrempa at redhat.com
Tue May 6 13:36:52 UTC 2014


Print the debug statements of individual file access functions from the
main API functions instead of the individual backend functions.

Also enhance initialization debug messages on a per-backend basis.
---
 src/storage/storage_backend_fs.c      | 43 ++++++++++++++++++++++-------------
 src/storage/storage_backend_gluster.c | 30 +++++++++---------------
 src/storage/storage_driver.c          | 27 +++++++++++++++++++---
 3 files changed, 62 insertions(+), 38 deletions(-)

diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index de27890..3d088ba 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -1339,18 +1339,31 @@ virStorageBackend virStorageBackendNetFileSystem = {
 };


+static void
+virStorageFileBackendFileDeinit(virStorageSourcePtr src)
+{
+    VIR_DEBUG("deinitializing FS storage file %p (%s:%s)", src,
+              virStorageTypeToString(virStorageSourceGetActualType(src)),
+              src->path);
+
+}
+
+
 static int
-virStorageFileBackendFileUnlink(virStorageSourcePtr src)
+virStorageFileBackendFileInit(virStorageSourcePtr src)
 {
-    int ret;
+    VIR_DEBUG("initializing FS storage file %p (%s:%s)", src,
+              virStorageTypeToString(virStorageSourceGetActualType(src)),
+              src->path);

-    ret = unlink(src->path);
-    /* preserve errno */
+    return 0;
+}

-    VIR_DEBUG("removing storage file %p(%s): ret=%d, errno=%d",
-              src, src->path, ret, errno);

-    return ret;
+static int
+virStorageFileBackendFileUnlink(virStorageSourcePtr src)
+{
+    return unlink(src->path);
 }


@@ -1358,21 +1371,16 @@ static int
 virStorageFileBackendFileStat(virStorageSourcePtr src,
                               struct stat *st)
 {
-    int ret;
-
-    ret = stat(src->path, st);
-    /* preserve errno */
-
-    VIR_DEBUG("stat of storage file %p(%s): ret=%d, errno=%d",
-              src, src->path, ret, errno);
-
-    return ret;
+    return stat(src->path, st);
 }


 virStorageFileBackend virStorageFileBackendFile = {
     .type = VIR_STORAGE_TYPE_FILE,

+    .backendInit = virStorageFileBackendFileInit,
+    .backendDeinit = virStorageFileBackendFileDeinit,
+
     .storageFileUnlink = virStorageFileBackendFileUnlink,
     .storageFileStat = virStorageFileBackendFileStat,
 };
@@ -1381,6 +1389,9 @@ virStorageFileBackend virStorageFileBackendFile = {
 virStorageFileBackend virStorageFileBackendBlock = {
     .type = VIR_STORAGE_TYPE_BLOCK,

+    .backendInit = virStorageFileBackendFileInit,
+    .backendDeinit = virStorageFileBackendFileDeinit,
+
     .storageFileStat = virStorageFileBackendFileStat,
 };

diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_backend_gluster.c
index 8679d96..e578e73 100644
--- a/src/storage/storage_backend_gluster.c
+++ b/src/storage/storage_backend_gluster.c
@@ -539,10 +539,12 @@ struct _virStorageFileBackendGlusterPriv {
 static void
 virStorageFileBackendGlusterDeinit(virStorageSourcePtr src)
 {
-    VIR_DEBUG("deinitializing gluster storage file %p(%s/%s)",
-              src, src->hosts[0].name, src->path);
     virStorageFileBackendGlusterPrivPtr priv = src->drv->priv;

+    VIR_DEBUG("deinitializing gluster storage file %p (gluster://%s:%s/%s%s)",
+              src, src->hosts->name, src->hosts->port ? src->hosts->port : "0",
+              src->volume, src->path);
+
     if (priv->vol)
         glfs_fini(priv->vol);

@@ -558,12 +560,14 @@ virStorageFileBackendGlusterInit(virStorageSourcePtr src)
     const char *hostname = host->name;
     int port = 0;

-    VIR_DEBUG("initializing gluster storage file %p(%s/%s)",
-              src, hostname, src->path);
+    VIR_DEBUG("initializing gluster storage file %p (gluster://%s:%s/%s%s)",
+              src, hostname, host->port ? host->port : "0",
+              NULLSTR(src->volume), src->path);

     if (!src->volume) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("missing gluster volume name for path '%s'"), src->path);
+                       _("missing gluster volume name for path '%s'"),
+                       src->path);
         return -1;
     }

@@ -619,14 +623,8 @@ static int
 virStorageFileBackendGlusterUnlink(virStorageSourcePtr src)
 {
     virStorageFileBackendGlusterPrivPtr priv = src->drv->priv;
-    int ret;
-
-    ret = glfs_unlink(priv->vol, src->path);
-    /* preserve errno */

-    VIR_DEBUG("removing storage file %p(%s/%s): ret=%d, errno=%d",
-              src, src->hosts[0].name, src->path, ret, errno);
-    return ret;
+    return glfs_unlink(priv->vol, src->path);
 }


@@ -635,14 +633,8 @@ virStorageFileBackendGlusterStat(virStorageSourcePtr src,
                                  struct stat *st)
 {
     virStorageFileBackendGlusterPrivPtr priv = src->drv->priv;
-    int ret;

-    ret = glfs_stat(priv->vol, src->path, st);
-    /* preserve errno */
-
-    VIR_DEBUG("stat of storage file %p(%s/%s): ret=%d, errno=%d",
-              src, src->hosts[0].name, src->path, ret, errno);
-    return ret;
+    return glfs_stat(priv->vol, src->path, st);
 }


diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 2cb8347..db327f4 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -2808,13 +2808,20 @@ virStorageFileInit(virStorageSourcePtr src)
 int
 virStorageFileCreate(virStorageSourcePtr src)
 {
+    int ret;
+
     if (!virStorageFileIsInitialized(src) ||
         !src->drv->backend->storageFileCreate) {
         errno = ENOSYS;
         return -2;
     }

-    return src->drv->backend->storageFileCreate(src);
+    ret = src->drv->backend->storageFileCreate(src);
+
+    VIR_DEBUG("created storage file %p: ret=%d, errno=%d",
+              src, ret, errno);
+
+    return ret;
 }


@@ -2831,13 +2838,20 @@ virStorageFileCreate(virStorageSourcePtr src)
 int
 virStorageFileUnlink(virStorageSourcePtr src)
 {
+    int ret;
+
     if (!virStorageFileIsInitialized(src) ||
         !src->drv->backend->storageFileUnlink) {
         errno = ENOSYS;
         return -2;
     }

-    return src->drv->backend->storageFileUnlink(src);
+    ret = src->drv->backend->storageFileUnlink(src);
+
+    VIR_DEBUG("unlinked storage file %p: ret=%d, errno=%d",
+              src, ret, errno);
+
+    return ret;
 }


@@ -2854,11 +2868,18 @@ int
 virStorageFileStat(virStorageSourcePtr src,
                    struct stat *st)
 {
+    int ret;
+
     if (!virStorageFileIsInitialized(src) ||
         !src->drv->backend->storageFileStat) {
         errno = ENOSYS;
         return -2;
     }

-    return src->drv->backend->storageFileStat(src, st);
+    ret = src->drv->backend->storageFileStat(src, st);
+
+    VIR_DEBUG("stat of storage file %p: ret=%d, errno=%d",
+              src, ret, errno);
+
+    return ret;
 }
-- 
1.9.2




More information about the libvir-list mailing list