VIR_FREE(priv->blockJobError);
virStorageSourceFree(priv->migrSource);
VIR_FREE(priv->qomName);
+ VIR_FREE(priv->nodeCopyOnRead);
}
static virClassPtr qemuDomainStorageSourcePrivateClass;
qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK_PRIVATE(disk);
priv->qomName = virXPathString("string(./qom/@name)", ctxt);
+ priv->nodeCopyOnRead = virXPathString("string(./nodenames/nodename[@type='copyOnRead']/@name)", ctxt);
return 0;
}
virBufferEscapeString(buf, "<qom name='%s'/>\n", priv->qomName);
+ if (priv->nodeCopyOnRead) {
+ virBufferAddLit(buf, "<nodenames>\n");
+ virBufferAdjustIndent(buf, 2);
+ virBufferEscapeString(buf, "<nodename type='copyOnRead' name='%s'/>\n",
+ priv->nodeCopyOnRead);
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</nodenames>\n");
+ }
+
return 0;
}
bool removable; /* device media can be removed/changed */
char *qomName; /* QOM path of the disk (also refers to the block backend) */
+ char *nodeCopyOnRead; /* nodename of the disk-wide copy-on-read blockdev layer */
};
# define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
<privateData>
<qom name='virtio-disk1/virtio-backend'/>
+ <nodenames>
+ <nodename type='copyOnRead' name='cor-node'/>
+ </nodenames>
</privateData>
</disk>
<disk type='file' device='cdrom'>