]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: block: store and test driver names for detected storage nodes
authorPeter Krempa <pkrempa@redhat.com>
Tue, 25 Jul 2017 17:10:27 +0000 (19:10 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 27 Jul 2017 07:56:41 +0000 (09:56 +0200)
Store the 'drv' field both for the storage node and for the format node
and format them in the test case.

Reviewed-by: Eric Blake <eblake@redhat.com>
src/qemu/qemu_block.c
src/qemu/qemu_block.h
tests/qemumonitorjsondata/qemumonitorjson-nodename-basic.result
tests/qemumonitorjsontest.c

index c555230e800df9300a6840dc7e61f6ab933a634a..7fb12ea5a1949c764a48b5a05130e65c7f7e3b4a 100644 (file)
@@ -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 &&
index 5d21057a77964d13a1661de3a93f66fa8605d6ce..f0a2c9aa7d58135299de6bbbd44a7ce1739d5e5b 100644 (file)
@@ -35,6 +35,10 @@ struct qemuBlockNodeNameBackingChainData {
     char *nodestorage;  /* node name of the storage backing the format node */
 
     qemuBlockNodeNameBackingChainDataPtr backing;
+
+    /* for testing purposes */
+    char *drvformat;
+    char *drvstorage;
 };
 
 virHashTablePtr
index bc183f8b96753543d211bccf6c6433a6bf880866..ad8b9b46ed3eebbbccb74558d34776455ae63551 100644 (file)
@@ -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'
index 88169832e8830420303844d51164934691122b98..346d5c401e60daf856e0cbcadf432aa26f92ee91 100644 (file)
@@ -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);