Re: [libvirt] [PATCHv2 31/62] qemu: domain: Add field for storing node name for copy-on-read

2018-08-16 Thread Ján Tomko

On Mon, Aug 13, 2018 at 06:00:05PM +0200, Peter Krempa wrote:

The copy-on-read feature is expressed by adding a new node layer in
qemu when using -blockdev. Since we will keep these per-disk (as opposed
to per storage source) we need to store the appropriate node names in
the disk definition.

Signed-off-by: Peter Krempa 
---
src/qemu/qemu_domain.c| 11 +++
src/qemu/qemu_domain.h|  1 +
tests/qemustatusxml2xmldata/modern-in.xml |  3 +++
3 files changed, 15 insertions(+)



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: Digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCHv2 31/62] qemu: domain: Add field for storing node name for copy-on-read

2018-08-13 Thread Peter Krempa
The copy-on-read feature is expressed by adding a new node layer in
qemu when using -blockdev. Since we will keep these per-disk (as opposed
to per storage source) we need to store the appropriate node names in
the disk definition.

Signed-off-by: Peter Krempa 
---
 src/qemu/qemu_domain.c| 11 +++
 src/qemu/qemu_domain.h|  1 +
 tests/qemustatusxml2xmldata/modern-in.xml |  3 +++
 3 files changed, 15 insertions(+)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 3058ceca79..e0dd3c0b15 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1066,6 +1066,7 @@ qemuDomainDiskPrivateDispose(void *obj)
 VIR_FREE(priv->blockJobError);
 virStorageSourceFree(priv->migrSource);
 VIR_FREE(priv->backendQomName);
+VIR_FREE(priv->nodeCopyOnRead);
 }

 static virClassPtr qemuDomainStorageSourcePrivateClass;
@@ -2131,6 +2132,7 @@ qemuDomainDiskPrivateParse(xmlXPathContextPtr ctxt,
 qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK_PRIVATE(disk);

 priv->backendQomName = virXPathString("string(./qom/@backend)", ctxt);
+priv->nodeCopyOnRead = 
virXPathString("string(./nodenames/nodename[@type='copyOnRead']/@name)", ctxt);

 return 0;
 }
@@ -2144,6 +2146,15 @@ qemuDomainDiskPrivateFormat(virDomainDiskDefPtr disk,

 virBufferEscapeString(buf, "\n", priv->backendQomName);

+if (priv->nodeCopyOnRead) {
+virBufferAddLit(buf, "\n");
+virBufferAdjustIndent(buf, 2);
+virBufferEscapeString(buf, "\n",
+  priv->nodeCopyOnRead);
+virBufferAdjustIndent(buf, -2);
+virBufferAddLit(buf, "\n");
+}
+
 return 0;
 }

diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 7d0b304727..d3147cb69a 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -398,6 +398,7 @@ struct _qemuDomainDiskPrivate {
 bool removable; /* device media can be removed/changed */

 char *backendQomName; /* QOM path to the eligible block backend */
+char *nodeCopyOnRead; /* nodename of the disk-wide copy-on-read blockdev 
layer */
 };

 # define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \
diff --git a/tests/qemustatusxml2xmldata/modern-in.xml 
b/tests/qemustatusxml2xmldata/modern-in.xml
index 21d4faca66..612090786a 100644
--- a/tests/qemustatusxml2xmldata/modern-in.xml
+++ b/tests/qemustatusxml2xmldata/modern-in.xml
@@ -333,6 +333,9 @@
 
 
   
+  
+
+  
 
   
   
-- 
2.16.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list