[libvirt] [PATCH 17/24] qemu: block: store and test driver names for detected storage nodes

Peter Krempa pkrempa at redhat.com
Wed Jul 26 10:00:47 UTC 2017


Store the 'drv' field both for the storage node and for the format node
and format them in the test case.
---
 src/qemu/qemu_block.c                                      | 14 +++++++++++---
 src/qemu/qemu_block.h                                      |  4 ++++
 .../qemumonitorjson-nodename-basic.result                  |  6 ++++++
 tests/qemumonitorjsontest.c                                |  2 ++
 4 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index bca6965fa..348961199 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -56,6 +56,9 @@ qemuBlockNodeNameBackingChainDataFree(qemuBlockNodeNameBackingChainDataPtr data)

     VIR_FREE(data->qemufilename);

+    VIR_FREE(data->drvformat);
+    VIR_FREE(data->drvstorage);
+
     qemuBlockNodeNameBackingChainDataFree(data->backing);

     VIR_FREE(data);
@@ -108,7 +111,8 @@ qemuBlockNodeNameGetBackingChainBacking(virJSONValuePtr next,
     virJSONValuePtr parentnodedata;
     virJSONValuePtr nodedata;
     const char *nodename = virJSONValueObjectGetString(next, "node-name");
-    const char *drvname;
+    const char *drvname = NULL;
+    const char *drvparent = NULL;
     const char *parentnodename = NULL;
     const char *filename = NULL;
     int ret = -1;
@@ -134,8 +138,10 @@ qemuBlockNodeNameGetBackingChainBacking(virJSONValuePtr next,

     if (parent &&
         (parentnodename = virJSONValueObjectGetString(parent, "node-name"))) {
-        if ((parentnodedata = virHashLookup(nodenamestable, parentnodename)))
+        if ((parentnodedata = virHashLookup(nodenamestable, parentnodename))) {
             filename = virJSONValueObjectGetString(parentnodedata, "file");
+            drvparent = virJSONValueObjectGetString(parentnodedata, "drv");
+        }
     }

     if (VIR_ALLOC(data) < 0)
@@ -143,7 +149,9 @@ qemuBlockNodeNameGetBackingChainBacking(virJSONValuePtr next,

     if (VIR_STRDUP(data->nodeformat, nodename) < 0 ||
         VIR_STRDUP(data->nodestorage, parentnodename) < 0 ||
-        VIR_STRDUP(data->qemufilename, filename) < 0)
+        VIR_STRDUP(data->qemufilename, filename) < 0 ||
+        VIR_STRDUP(data->drvformat, drvname) < 0 ||
+        VIR_STRDUP(data->drvstorage, drvparent) < 0)
         goto cleanup;

     if (backing &&
diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
index 5d21057a7..c0ed43ec0 100644
--- a/src/qemu/qemu_block.h
+++ b/src/qemu/qemu_block.h
@@ -34,6 +34,10 @@ struct qemuBlockNodeNameBackingChainData {
     char *nodeformat;   /* node name of the format layer */
     char *nodestorage;  /* node name of the storage backing the format node */

+    /* for testing purposes */
+    char *drvformat;
+    char *drvstorage;
+
     qemuBlockNodeNameBackingChainDataPtr backing;
 };

diff --git a/tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result b/tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
index bc183f8b9..ad8b9b46e 100644
--- a/tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
+++ b/tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
@@ -1,10 +1,16 @@
 drive-virtio-disk0
 filename    : '/var/lib/libvirt/images/rhel7.3.1483545313'
 format node : '#block187'
+format drv  : 'qcow2'
 storage node: '#block033'
+storage drv : 'file'
   filename    : '/var/lib/libvirt/images/rhel7.3.1483536402'
   format node : '#block306'
+  format drv  : 'qcow2'
   storage node: '#block220'
+  storage drv : 'file'
     filename    : '/var/lib/libvirt/images/rhel7.3.qcow2'
     format node : '#block558'
+    format drv  : 'qcow2'
     storage node: '#block481'
+    storage drv : 'file'
diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
index 88169832e..346d5c401 100644
--- a/tests/qemumonitorjsontest.c
+++ b/tests/qemumonitorjsontest.c
@@ -2714,8 +2714,10 @@ testBlockNodeNameDetectFormat(void *payload,
         virBufferAsprintf(buf, "filename    : '%s'\n", entry->qemufilename);
         virBufferAsprintf(buf, "format node : '%s'\n",
                           NULLSTR(entry->nodeformat));
+        virBufferAsprintf(buf, "format drv  : '%s'\n", NULLSTR(entry->drvformat));
         virBufferAsprintf(buf, "storage node: '%s'\n",
                           NULLSTR(entry->nodestorage));
+        virBufferAsprintf(buf, "storage drv : '%s'\n", NULLSTR(entry->drvstorage));

         virBufferAdjustIndent(buf, 2);

-- 
2.13.2




More information about the libvir-list mailing list